问题描述:
[Excel 源 [1]] 错误: 输出“Excel 源输出”(9) 上的 输出列“Description 3”(546) 出错。返回的列状态是:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。
原因:
前8条是少于255的字符串,则设成nvarchar(255) 类型,但如果Excel后面的记录中有长度超过了excle默认的255个字符,则出现警告,源列属性不匹配,执行也通不过。使用Ntext类型也尝试过,不匹配。即使在导入在ETL设置映射时改变了字段类型也不行(它这个默认的只能通过加载excle来判断改字段的类型)。
解决方法:
- 最简单有效的就是直接将EXCLE里面超过字符长度超过255的那一行剪切到第一行来(可用“最合适列宽”来选中最长的那一行)
- 把EXCEL转换成CSV格式,然后使用平面文件源导入数据库(我自己没成功,转换后的字符是乱码) 。需要注意两点:
1、输出列长度需要手动修改
2、注意不同语言造成的Unicode字符转换问题,必要时先切换系统语言,再作转换。 - 修改注册表。网上修改注册表的方法有几种。分为不同引擎,不同位数的操作系统。这几种我刚开始都试了,结果都没用。后面还是去微软官方查到了改注册表的正确路径。建议这几种都可以试试。
- 微软官方:
- 分为不同引擎:
- 微软官方:
-
将excle里面长度超过255的字段截取成不超过255的多列。从而来加载到数据库中,最后再通过字符串拼接来达到目的。