当前位置: 移动技术网 > IT编程>数据库>MSSQL > 解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误

解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误

2018年10月07日  | 移动技术网IT编程  | 我要评论

苏小玎的个人资料,c#进度条,秦基伟儿子砸店图片

编写python爬虫程序可以在电商、旅游等网站上爬取相关评论数据,这些数据可以用于词云制作、感情词分析、提取关键词等,也可以将爬取下来的数据以自己的方式进行展示。评论数据爬取下来后,就要考虑怎样入库,可以在爬虫程序中编写代码直接入库,也可以将爬取到的数据存到excel表格中,再将excel表格导入到数据库中。在将excel表格导入到sql server数据库时可能会出现很多错误,这里要解决的错误是:text was truncated or one or more characters had no match in the target code。这是由于字段大小(size)设置过小,而数据中有超过这个size的记录从而导致了截断(truncate)。

在ssms中,可以编写sql语句或使用菜单创建数据表,并为表中的字段设置大小(size)。在将excel表格导入到数据库时,字段的大小又是怎么确定的呢?在excel表格中,第一行的各列值作为数据表(指数据库中的table)中的各字段名,第二行以后的每一行的记录将作为数据表中的记录。下面两张图反映了excel表中数据和数据表中数据的对应关系。

景点概览示例

景点概览示例2

我们在ssms中打开“景点概览”数据表的设计视图,查看各字段的大小(size)。

数据表中各字段的大小

excel表在导入到数据库后,字段的data type(数据类型)是根据excel表中第二行(即第一条记录)的值推出的。如果第二行对应列的那个值是数字,数据库中相应字段的data type就是float型,如果值是字符,相应字段的data type就是nvarchar(255)。将数字都作为float型,将字符都作为nvarchar(255)型可以避免一些截断问题或高精度向低精度转换等问题的出现。但如果某一个字段的data type被设置成了nvarchar(255),而表中又有记录的值的大小超过了255,那么就会出现文章开头所说的truncate(截断)问题。所以,将excel表格的各条记录中,最长的那条记录放到excel表格的第二行(即第一条记录的位置),就可以解决上面所说的问题


一、准备excel表格数据

  excel表格是可以导入到sql server的,但是wps表格是不行的。准备好excel表格后,另存为成合适的格式(excel 2003或当前的excel版本号,后面会用到)。这里保存成excel 2003(.xls)的格式。使用的数据是夫子庙景区的评论数据,首行只有一个字段“评论”。

  将excel表格另存为合适的格式

  夫子庙景区评论

二、在ssms中创建数据库并导入excel表格

  打开ssms,创建数据库,右键数据库-tasks-import data,打开sql server import and export wizard。

  右键数据库导入excel

  sql server import and export wizard

  选择data source数据源为microsoft excel表格,选择准备好的excel文件,在excel version中选择相应的版本号。已自动勾选的first row has column names表示excel表格中首行作为字段值。

  选择要导入的excel表格

  选择导入destination为:sql server native client,server name是当前sql server连接的服务名,应该是自动出现的,authentication选择登录方式(windows身份验证或sql server身份验证),database选择excel表导入到的数据库。

  选择要导入到的数据库

  选择全部导入或者编写sql语句部分导入(我也不是很明白..)。这里选择:copy data from one or more tables or views,全部导入。

  全部导入或query选择导入

  next之后,选择excel表中的工作簿(这里只有一个夫子庙)。

  选择夫子庙表

  点击edit mappings,可以看到“评论”字段的data type被设置成了nvarchar(255)。这里要注意,虽然在这里size这个值是可以更改的,但是即使改为max后依然导入失败(没有解决)。

  查看夫子庙评论字段的size

  继续后续步骤,执行导入。

  后续步骤1

  后续步骤2

  点击完成,导入失败,查看出错日志。

  报错

三、整理excel表格数据重新导入

  上面的excel表格导入失败了,在整理表格之前,要在ssms中将失败的数据表删掉(虽然失败了,但是数据表的框架已经创建了)。如果对表格进行select查询,结果是空的。

  查询到了空结果

  打开excel表格,找到最长的那条记录,并将其移动到第二行。

  找到最长的那条记录

  将最长的那条记录移到第二行

  重新导入到数据库,这次导入成功了。

  查看夫子庙评论字段的size2

  导入成功

  在ssms中,select查询刚才导入进来的数据。excel表格导入进来的数据表的名字是excel表中数据簿的名字后+"$"符号。

  查询刚才导入进来的数据

四、总结

  在将excel表格导入到sql server数据库时如果出现:text was truncated or one or more characters had no match in the target code 这个错误,将excel表中最长的那条记录移到第二行即可(即第一条记录所在行)解决导入失败的问题

  另外,sql server数据库的导入导出功能还可以实现数据库中数据导出到excel表或其他一些数据源之间的相互导入导出,读者可以进行尝试。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网