SSIS平面文件源 - 文本被截断或目标代码页中的一个或多个字符不匹配

时间:2012-07-02 15:48:28

标签: ssis

我正在尝试将记录从逗号分隔的平面文件导入到SQL数据库文件中,并且我得到“文本被截断或目标代码页中的一个或多个字符不匹配”。当源文件在特定字段中有超过50个字符时。该字段的目标文件目标是1000个字符,因此不应该是一个问题。我把它缩小到文本文件中的“A123456789B123456789C123456789D123456789E123456789”导入,而“A123456789B123456789C123456789D123456789E123456789F”抛出错误。

如何在截断之前让它允许更多字符?

4 个答案:

答案 0 :(得分:9)

我在第二个答案中找到答案: Importing CSV file into SQL server... 感谢Eoan。

最终,在源数据文件的高级编辑器中,在“输入和输出属性”选项卡上的“外部列”下,有一个默认为50的“长度”属性。更改该属性以匹配“目标数据库文件”就可以了。

答案 1 :(得分:1)

另一个快速解决方案:

如果您使用的是Microsoft Excel,请将CSV保存为XLSX。并且,导入XLSX而不是CSV我发现导入向导比CSV更好地理解Excel。

答案 2 :(得分:0)

即使我正在导入excel文件,我也遇到了文本被截断的问题。我发现了

  

SSIS系统通过检查前8行(荒谬)来确定EXCEL列的数据类型。因此,如果前8行中的所有行都小于255个字符,并且在第8行之后存在大于255个字符的值,则会发生截断错误。

     

所以解决方法是抛出一个大的临时行(> 255)   chars)有问题的列中的值,然后运行Integration。   完成后,删除临时行。   -ryan1999

(见答案here

我的工作是:

  1. 添加另一列,其中包含可能被截断的列的长度
  2. 将该列从最大到最小排序
  3. 删除列。
  4. 希望这有助于某人

答案 3 :(得分:0)

在我的情况下 - 将违规行移动为第一行(如果可以的话,因为csv / text文件可能非常大)。

  • 运行预览。
  • 原来的 字段中有一个逗号,但幸好它有双引号 显示领域的分离。
  • 选择数据源"对话框> 一般,添加文字限定符:" (双引号)