【问题标题】:How to resolve SSIS Package Truncation error如何解决 SSIS 包截断错误
【发布时间】:2019-03-23 17:00:51
【问题描述】:

SSIS 错误:0xC02020A1
将数据从 CSV 文件导入 SQL 2008 时,出现以下错误。

> Error: 0xC02020A1 at Data Flow Task, Source – Distribution by xyz
> table from CSV [1]: Data conversion failed.
> The data conversion for column "ID" returned status value 4 and
> status text "Text was truncated or one or more characters had no match
> in the target code page.".    

以前使用过varchar,从来没有问题,我尝试将数据转换为Int,甚至增加了大小,但仍然出现此错误。我还尝试使用 Advance 编辑器并将数据更改为几乎任何我认为会涵盖该列数据类型的数据,但仍然出现错误。感谢您的建议

【问题讨论】:

  • ID 列中有一个值对于您的数据类型来说太大了。在 Excel 中打开 CSV 的副本并对列进行文本处理。使用公式len(列的单元格1)并将其向下移动。然后降序排序。大数字应该弹出到顶部
  • 我在最后一列数据上也发生了这个错误,其中行中有一个未包装的“,”导致最后一列过载

标签: sql tsql sql-server-2008 ssis


【解决方案1】:

您的原始文件中很可能有“不良”记录。

对于“bad”,如果可以是以下两种之一: 1) 不能对字符串值进行隐式转换; 2)字符串太大(超过8000)。

为了调试它,将目标列更改为VARCHAR(MAX)

然后加载原始文件(不要忘记在标志文件连接管理器中的Advanced 页面中将外部列长度增加到8000)。

如果:

1)加载成功,查询表where ISNUMERIC([that numeric column]) =0,如果有返回,就是加载时无法转换的坏记录。

2) 没有正确加载,请尝试查看该字段中的任何值是否超过 8000 个字符。 (如果无法手动检查,可以使用C#脚本)

【讨论】: