如何处理SSIS中的NULL /空白

问题描述 投票:2回答:1

我正在构建一个SSIS包来加载一个平面文件(CSV)到SQL服务器。

当我尝试将列state_code(char(2))插入SQL服务器时,我收到以下错误。如果我将目标数据类型更改为Char(4),则程序包将成功执行。

我怀疑这是由于CSV中的“NULL”而产生的问题。该包将NULL作为4个字符并尝试插入到Destination(Char(2))。我google了很多。但我在任何地方都没有发现任何类似的情况。

[平面文件源[2]]错误:数据转换失败。列“Column_1”的数据转换返回状态值4,状态文本“文本被截断,或者目标代码页中的一个或多个字符不匹配”。

sql-server ssis etl ssis-2012 ssis-2008
1个回答
1
投票

只需使用以下表达式添加派生列转换,以使用"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]
© www.soinside.com 2019 - 2024. All rights reserved.