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

liangCK 2009-10-09 10:49:06
在使用平面文件源和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
)
选中了 “保留数据流中数据源的空值” + 不选中 “保留目标的空值”



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

...全文
652 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangdingyu8686 2009-11-28
  • 打赏
  • 举报
回复
高手,哥,你就是一个传说
guidahuasheng 2009-10-23
  • 打赏
  • 举报
回复

值得学习
iloveliming0 2009-10-18
  • 打赏
  • 举报
回复
讲的很好!学习。
zhongxin799 2009-10-18
  • 打赏
  • 举报
回复
学习
htl258_Tony 2009-10-13
  • 打赏
  • 举报
回复
学习
pbsh 2009-10-12
  • 打赏
  • 举报
回复
关于平面文件源或EXCEL中包含空值列,如果不选中保留空值,则导入数据库中的值会随输出列数据类型的选择发生变化,好像会有‘’,‘- ’等情况发生。
wsxcdx 2009-10-12
  • 打赏
  • 举报
回复
xx
黄_瓜 2009-10-10
  • 打赏
  • 举报
回复
学习
clicsullivan 2009-10-10
  • 打赏
  • 举报
回复
学习
SQL77 2009-10-10
  • 打赏
  • 举报
回复
学习
Zoezs 2009-10-10
  • 打赏
  • 举报
回复
xuexi
--小F-- 2009-10-10
  • 打赏
  • 举报
回复
学习
华夏小卒 2009-10-10
  • 打赏
  • 举报
回复
都是啥哦,看不懂
navy887 2009-10-10
  • 打赏
  • 举报
回复
学习
叶子 2009-10-10
  • 打赏
  • 举报
回复
关注 学习。
lihan6415151528 2009-10-10
  • 打赏
  • 举报
回复
学习
soft_wsx 2009-10-10
  • 打赏
  • 举报
回复
学习!
V68V6 2009-10-10
  • 打赏
  • 举报
回复
mark
百年树人 2009-10-10
  • 打赏
  • 举报
回复
学习!
microsofttyc 2009-10-10
  • 打赏
  • 举报
回复
强大
加载更多回复(1)

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧