当源值为null时,未设置SSIS缺省值

时间:2015-07-21 22:05:01

标签: ssis

问题: OLEDB源在手机中具有空值。 目标表具有Phone NOT NULL DEFAULT 1234567。 OLEDB目的地未选中Keep Nulls

根据我在此阅读https://msdn.microsoft.com/en-us/library/ms187887(v=sql.110).aspx

如果传入的值为NULL,则应插入列的默认值。

但它没有发生。而且我不想在SSIS中进行任何转换。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

在您的数据流任务中,在OLE_DB源中,将数据访问模式设置为' SQL命令'并写出如下的选择语句

SELECT Column_A
    ,Column_B
    ,ISNULL(Phone, 1234567)
    ,Column_C
    ,Column_D etc.
FROM Source_Table

答案 1 :(得分:0)

您可以在数据流任务中的SQL命令中编写CASE语句:

select 
CASE
 when PhoneNumber IS NUll   then '1234567' else  table_name.PhoneNumber END as PhoneNumber,

from table table_name

答案 2 :(得分:0)

我相信答案是,要使Keep Nulls选项起作用,必须从数据源中删除该列。

创建表#tmpdel ( INT NOT NULL默认值0, b INT NOT NULL默认值0 )

插入#tmpdel(a)值(1) - WORKS 插入#tmpdel(a,b)值(1,null) - FAILS