Sql server 如何处理SSI中的空/空白
我正在构建一个SSIS包,以便将平面文件(CSV)加载到SQL server 当我尝试将Sql server 如何处理SSI中的空/空白,sql-server,ssis,etl,ssis-2012,ssis-2008,Sql Server,Ssis,Etl,Ssis 2012,Ssis 2008,我正在构建一个SSIS包,以便将平面文件(CSV)加载到SQL server 当我尝试将state\u code(char(2))列插入到SQL server时,出现以下错误。如果我将目标数据类型更改为Char(4),则包将成功执行 我怀疑这是由于CSV中的“NULL”而产生的问题。这个包将NULL作为4个字符,并试图插入到目的地(Char(2))。我在谷歌上搜索了很多。但我在任何地方都没有发现类似的情况 [平面文件源[2]]错误:数据转换失败。列“column_1”的数据转换返回状态值4和状态
state\u code
(char(2))列插入到SQL server时,出现以下错误。如果我将目标数据类型更改为Char(4),则包将成功执行
我怀疑这是由于CSV中的“NULL”而产生的问题。这个包将NULL作为4个字符,并试图插入到目的地(Char(2))。我在谷歌上搜索了很多。但我在任何地方都没有发现类似的情况
[平面文件源[2]]错误:数据转换失败。列“column_1”的数据转换返回状态值4和状态文本“文本被截断或一个或多个字符在目标代码页中不匹配。”
只需使用以下表达式添加派生列转换,即可将
的“NULL”
字符串替换为NULL
值:
UPPER([Column]) == "NULL" ? NULL(DT_WSTR,2) : [Column]
或者可以用空字符串替换它
UPPER([Column]) == "NULL" ? "" : [Column]
更新1
根据你的评论,我发布了这个更新
NULL()
函数将数据类型作为参数,因此如果使用日期列,可以使用NULL(dtu-Date)
对于日期列,可以使用以下表达式:
UPPER([Column]) == "NULL" ? NULL(DT_DATE) : [Column]
UPPER([Column]) == "NULL" ? NULL(DT_I4) : [Column]
对于整数列,可以使用以下表达式:
UPPER([Column]) == "NULL" ? NULL(DT_DATE) : [Column]
UPPER([Column]) == "NULL" ? NULL(DT_I4) : [Column]
当您将数据从数据库导出到平面文件时,您无法处理数据类型INT的空值。请参阅此链接,其中哪些数据类型处理空值:在CSV文件中,如果单元格包含单词“null”,则其值为4个字符的字符串“null”。空白单元格将被解释为值
NULL
。“NULL”和NULL
不一样。您可以使用。放置在源和目标之间。使用它将字符串null替换为null值。要添加@Larnu所说的内容,通常是因为Excel倾向于将实际的null
字段替换为文本“null”
,谢谢大家,可以告诉我在派生列中执行此操作的表达式吗。这是一个CSV文件。对于您引用的文件类型:Microsoft Excel逗号分隔值文件(.csvI)对于日期和整数列,我遇到了相同的问题。日期列和整数列的表达式是什么?您可以在此处阅读更多内容:对于日期列,您可以使用:NULL(DT_日期)
对于整数NULL(DT_I4)