我正在构建一个SSIS包来加载一个平面文件(CSV)到SQL服务器。
当我尝试将列state_code
(char(2))插入SQL服务器时,我收到以下错误。如果我将目标数据类型更改为Char(4),则程序包将成功执行。
我怀疑这是由于CSV中的“NULL”而产生的问题。该包将NULL作为4个字符并尝试插入到Destination(Char(2))。我google了很多。但我在任何地方都没有发现任何类似的情况。
[平面文件源[2]]错误:数据转换失败。列“Column_1”的数据转换返回状态值4,状态文本“文本被截断,或者目标代码页中的一个或多个字符不匹配”。
只需使用以下表达式添加派生列转换,以使用"NULL"
值替换NULL
字符串:
UPPER([Column]) == "NULL" ? NULL(DT_WSTR,2) : [Column]
或者你可以用空字符串替换它
UPPER([Column]) == "NULL" ? "" : [Column]
更新1
基于您的评论我发布了此更新
NULL()
函数将数据类型作为参数,因此如果您使用Date列,则可以使用NULL(DT_DATE)
Read more。
对于Date列,您可以使用以下表达式:
UPPER([Column]) == "NULL" ? NULL(DT_DATE) : [Column]
对于整数列,您可以使用以下表达式:
UPPER([Column]) == "NULL" ? NULL(DT_I4) : [Column]