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

Let*_*nta 8 sql sql-server ssis sql-server-2005 flat-file

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

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

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

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

Let*_*nta 2

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


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

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

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

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