当源值为 null 时,未设置 SSIS 默认值

SSIS default value is not being set when source value in null

问题: OLEDB 源在 phone 中具有空值。 目标 table 有 Phone NOT NULL DEFAULT 1234567。 OLEDB 目标未选中“保持空值”

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

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

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

在您的数据流任务中,在 OLE_DB 源中,将数据访问模式设置为 'SQL command' 并编写如下 select 语句

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

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

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

from table table_name

我相信答案是,要使“保留空值”选项起作用,数据源中必须缺少该列。

创建table#tmpdel ( 一个 INT NOT NULL 默认值 0, b INT NOT NULL 默认值 0 )

插入#tmpdel(a) 值(1) - 有效 插入#tmpdel(a, b) values(1, null) - FAILS