SSIS中数据源和数据目标中的”保留空值”

来源:互联网 发布:node 命令行 编辑:程序博客网 时间:2024/04/28 19:56

SSIS中数据源和数据目标中的保留空值

 

在使用平面文件源和SQL SERVER目标的时候,会发现在平面文件源中,SQL SERVER目标的高级设置中.有一个保留空值的选项.

如果设置这两个选项会得到什么样的结果呢?.

 

假如,我们现在有一个文本文件,内容如下:

liangck,小梁,,21,2009-10-09

,兰儿,,,

lan,,,,

其中有一些列为空.如果此时,不选中在平面文件源中的保留源中的空值的话,

那么.如果列类型为字符串,则返回长度为0的字符串’’

如果列类型为数值,则返回数值0

如果列类型为日期的话,则返回1753-01-01 00:00:00

 

这个我们可以通过例子来证明.

1.创建一个平面文件源,不选择在数据源中保留源中的空值

然后选择上面的文本文件.

然后在高级中设置各列的类型.

 

 

                类型

ID                DT_STR

Name             DT_WSTR

Sex               DT_WSTR

Age              DT_I2

LastAccess        DT_DBTIMESTAMP

 

然后导入到目标表当中.目标的设置不介绍了.就选择Connection和设置映射即可.

CREATE TABLE tb2 (

    [ID] VARCHAR(50),

    [Name] NVARCHAR(50),

    [Sex] NVARCHAR(2),

    [Age] SMALLINT,

    [LastAccess] DATETIME

)

 

可以看到.没有一个列为标识为null,而是采用了某个类型的最小默认值.

 

如果此时,选中平面文件源中的保留数据流中数据源的空值”,将会这样的结果

 

 

OK.源中保留空值和不保留空值介绍完.再介绍SQL SERVER目标中.选中保留空值

 

如果在平面文件源中.不选中保留数据流中数据源的空值那么.列的值,已经用了某个类型中的最小默认值了,也就是说,列不为null,而是使用了一个具体的值..此时,再设置SQL SERVER目标的保留空值的话,已经没有效了.

 

如果在平面文件源中.选中了保留数据流中数据源的空值的话,那么.如果不存在的数据.则用null标识.如果此时在SQL SERVER目标中.选择了保留空值”.那就会用null标识空值.即使列中默认值也是.如果不选择目标中的保留空值的话,那如果有默认值,则用默认值,如果没有,则用null标识.

 

:

--目标表

CREATE TABLE tb3(

    [ID] VARCHAR(50),

    [Name] NVARCHAR(50) DEFAULT 'lan',

    [Sex] NVARCHAR(2),

    [Age] SMALLINT,

    [LastAccess] DATETIME

)

 

选中了 保留数据流中数据源的空值” + 不选中 保留目标的空值

 

选中了 保留数据流中数据源的空值” + 选中 保留目的空值

原创粉丝点击