Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS平面文件源文本被截断,或者目标代码页中的一个或多个字符不匹配_Ssis - Fatal编程技术网

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

SSIS平面文件源文本被截断,或者目标代码页中的一个或多个字符不匹配,ssis,Ssis,我试图将记录从逗号分隔的平面文件导入到SQL数据库文件中,当源文件的特定字段中包含50个以上字符时,我会得到一个“文本被截断或目标代码页中的一个或多个字符不匹配”。该字段的目标文件目标为1000个字符,因此这不应成为问题。我将文本文件中的“A123456789B123456789C123456789D123456789E123456789”缩小为“A123456789B123456789C123456789D123456789F”抛出错误 如何让它在截断之前允许更多字符?我在第二个答案中找到了答

我试图将记录从逗号分隔的平面文件导入到SQL数据库文件中,当源文件的特定字段中包含50个以上字符时,我会得到一个“文本被截断或目标代码页中的一个或多个字符不匹配”。该字段的目标文件目标为1000个字符,因此这不应成为问题。我将文本文件中的“A123456789B123456789C123456789D123456789E123456789”缩小为“A123456789B123456789C123456789D123456789F”抛出错误


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

我在第二个答案中找到了答案: 多亏了Eoan


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

另一个快速解决方案:


如果您有Microsoft Excel,请将CSV另存为XLSX。而且,导入XLSX而不是CSV我发现导入向导比CSV更了解Excel

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

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

因此,解决方法是在一个临时行中加入一个大(>255)字符 chars)值,然后运行集成。 完成后,删除临时行。 -ryan1999

(见答覆)

我的工作是:

  • 添加另一列,其中包含假定将被截断的列的长度
  • 将该列从最大到最小排序
  • 删除该列
  • 希望这有助于某人

    在我的例子中——将有问题的行作为第一行移动(如果可以的话,因为csv/文本文件可能相当大)

    • 运行预览
    • 结果是 字段中有一个逗号,但谢天谢地,它有双引号 显示字段的分离
    • 转到“选择数据源”对话框> 常规,添加了文本限定符:“(双引号)