SSIS和NULL值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS和NULL值相关的知识,希望对你有一定的参考价值。

我有SSIS包。它有一个执行sql任务,从不同服务器上的表中获取一些配置值。因此,SSIS包获取这些配置值并将它们存储在SSIS中的变量中。这些变量在进一步的sql任务中用作参数。

我遇到的问题是,其中一些配置值是null。因此,每当SSIS遇到整数类型的空值时,它会将其转换为0并将其作为0传递给进一步的任务,而不是将其作为null传递

如果列的数据类型是日期,并且其值在配置表中为空,则SSIS会分配默认值12/30/1899 12:00:00 AM并将默认值作为参数而不是null值传递。

如何使SSIS包传递实际的空值而不是SSIS转换的值?

答案

我会将所有变量的数据类型更改为String,并更改Execute SQL Task命令以返回字符串值,例如使用CAST ... AS NVARCHAR(4000))

字符串变量通常更容易使用。

另一答案

如上所述使用字符串然后在SQL任务中尝试'select isnull([field],'null')'

这会将所有空值更改为字符串'null'。

这是一种hacky方式,但它可能会起作用。

另一答案

有各种选择。其中一个,你需要创建一个表达式,它将你的日期转换为null而不是最小日期值(“1899-12-30”)

这种转换的表达示例:

(DT_DATE)( REPORT_DATE ==(DT_DATE)"1899-12-30" ? NULL(DT_DATE) : REPORT_DATE )

以上是关于SSIS和NULL值的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 处理NULL

如何在ssis中将空白转换为null

SSIS 无法获取列值并将其设置为 NULL

SSIS 空值问题

SSIS 未正确从 Excel 导入 TEXT 列(整数导致 NULL 值)

如何在ssis中将空白转换为null