使用SSIS导入/导出向导在数字列中保留NULL?

时间:2010-02-24 18:54:17

标签: sql sql-server sql-server-2005 ssis flat-file

我在使用SSIS数据导入向导将数据从制表符分隔的平面文件(TSV文件)上传到SQL Server 2005时遇到问题。我没有使用SQL Server 2000中的等效过程遇到此问题,我已经检查过我尝试导入的文件的内部结构在SQL Server升级发生之前就没有改变。

问题是带有数值数据类型的列中的所有空值(例如smallint,float等)在导入时都会转换为0,而不是NULL。这意味着跨这些数据的AVGing会产生错误的输出。

TSV文件不包含文本限定符,但是测试使用带有一些虚拟数据的限定符并不能解决此问题。

可以通过导入VARCHAR列来保留NULL,但这远非理想。有没有办法指示SSIS导入/导出向导将空文件从平面文件导入到数值数据类型为NULL而不是0的列中?

2 个答案:

答案 0 :(得分:4)

请查看我的answer here

向导未公开您需要的正确设置...

答案 1 :(得分:2)

@gbn:感谢指针。我相信我现在已经找到解决此问题的方法,并且能够成功导入包含数值列中NULL值的SQL Server 2005数据库数据。


如果其他人遇到同样的问题:

我使用Business Intelligence Development Studio中的数据流任务导入数据(而不是像以前一样使用 dtswizard ),方法是将数据流任务从平面文件源构建到OLE DB目标。

在“平面文件源编辑器”框中,有一个“将来自源的空值保留为数据流中的空值”复选框。滴答这似乎可以解决这个问题。

正如@gbn指出的那样,向导中缺少此框。