SSIS - 无法将值null插入列

Joe*_*e W 1 ssis

我之前看到过这个错误,但是通过手动输入值来解决这个问题,但那是4行,这次错误超过100行.

问题是,这个名为Shipto它的列将包含三个内容之一,1位数字,2位数字或单词All.导入对1位和2位数字完全正常,但如果有All,则会导致此错误:

[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PROCESSINPUTFAILED.组件"OLE DB目标"(162)上的ProcessInput方法在处理输入"OLE DB目标输入"(175)时失败,错误代码为0xC0202009.标识的组件从ProcessInput方法返回错误.该错误特定于组件,但错误是致命的,将导致数据流任务停止运行.在此之前可能会发布错误消息,其中包含有关失败的更多信息.

此包获取一个表中的值并将它们插入另一个表中.我查看了它将从中获取值的表,并且该列shipto不为null.

唯一的区别是看两个表的结构.临时表允许该列上的空值,而真实表则不允许.两个表都将列作为a varchar(20).

我在数据流中注意到有一个复选框说明check constraints; 会不会检查这个问题解决了吗?因为列不为null.

感谢您提供的任何帮助,我将发布可能需要的任何其他信息.谢谢.

Ric*_*sen 5

有几种可能性:

  1. 源表中有一个null.目标表不允许该列中的空值.有几种选择.如果您直接从表中使用数据源,请使用SQL命令而在查询中处理null:

    SELECT field1,field2,isnull(shipto,'')field3,field4,.... FROM Table

    您可以在上面的空字符串中使用您想要的任何内容,以使用更可接受的值替换空值.

    如果您不想这样做,您将不得不在目标数据库中允许空值,或者找出源数据库表中存在空值的原因并确保不再发生这种情况.

  2. 字段未映射.源中的值未映射到目标字段.

  3. 源和目标之间的其他转换是引入NULL值.

  • 你能指出这三个答案中哪一个适合你,以便其他人可以从答案中得到满足吗?谢谢! (3认同)