当源值为 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
问题: 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