当列长度足够时,SSIS截断错误

时间:2016-10-04 16:27:14

标签: csv ssis flat-file truncation

我有一个.csv平面文件,我试图在数据流中使用平面文件源导入。我得到截断错误似乎不可能。据我所知,指定的列长度对于所有数据来说都足够了。

例如,我目前看到的错误是:

  

[FF_SRC Unicode文件[237]]错误:数据转换失败。列"" MIC"" 的数据转换返回状态值4和状态文本"文本被截断或一个或多个字符不匹配在目标代码页中。"。

  

[FF_SRC Unicode文件[237]]错误:处理文件时发生错误" C:[文件路径]"在数据第14行

数据行14中的列MIC条目是" varuna"。列MIC在连接管理器中设置为长度100,并且在平面文件源的外部和输出列中设置为。

我已经验证了SSIS中指定的列宽对于所有传入数据来说都足够了。我在excel中打开.csv并获得每列的最大长度并将其四舍五入。我确认excel没有更改数据(有一个列,它已经做了,我已经解释了这一点。)

我在连接管理器的高级选项卡中验证了这些值以及"输入和输出属性"外部和输出列的平面文件源组件。

当我运行包时,它会因截断错误而失败。它告诉我专栏。我验证指定的长度对于该列来说已经足够了,但无论如何都会增加它。当我再次运行它时,它将传递导致错误的特定值(我刚刚修复的那个")但稍后会失败一些值。没有特定的列或行导致问题。

我甚至将每个列的长度设置为100,这应该是绰绰有余的。 (一个例外列设置为长度400,因为它的值通常为200-300个字符。此列从未引起过我的问题)。 400字符列之外的文件中最长的值是42个字符。

编辑:将列长度设置为1000后,程序包成功运行。我仍然无法解释为什么1000会在1000没有的情况下起作用,两者都应该超过必要的两倍。我不认为这是一个解决方案,因为我宁愿不浪费那些记忆。

0 个答案:

没有答案