我在使用SSIS数据导入向导将数据从制表符分隔的平面文件(TSV文件)上传到SQL Server 2005时遇到问题。我没有使用SQL Server 2000中的等效过程遇到此问题,我已经检查过我尝试导入的文件的内部结构在SQL Server升级发生之前就没有改变。
问题是带有数值数据类型的列中的所有空值(例如smallint,float等)在导入时都会转换为0,而不是NULL。这意味着跨这些数据的AVGing会产生错误的输出。
TSV文件不包含文本限定符,但是测试使用带有一些虚拟数据的限定符并不能解决此问题。
可以通过导入VARCHAR列来保留NULL,但这远非理想。有没有办法指示SSIS导入/导出向导将空文件从平面文件导入到数值数据类型为NULL而不是0的列中?
答案 0 :(得分:4)
请查看我的answer here
向导未公开您需要的正确设置...
答案 1 :(得分:2)
@gbn:感谢指针。我相信我现在已经找到解决此问题的方法,并且能够成功导入包含数值列中NULL值的SQL Server 2005数据库数据。
如果其他人遇到同样的问题:
我使用Business Intelligence Development Studio中的数据流任务导入数据(而不是像以前一样使用 dtswizard ),方法是将数据流任务从平面文件源构建到OLE DB目标。
在“平面文件源编辑器”框中,有一个“将来自源的空值保留为数据流中的空值”复选框。滴答这似乎可以解决这个问题。
正如@gbn指出的那样,向导中缺少此框。