使用SSIS导入/导出向导保留数值列中的NULL值?

8
我在使用SSIS数据导入向SQL Server 2005上传制表符分隔的平面文件(TSV文件)时遇到了问题。在SQL Server 2000中,我没有遇到这个问题,并且我已经检查过我尝试导入的文件的内部结构自SQL Server升级以来就没有改变。
问题是,所有数值数据类型列(例如smallint、float等)中的空白值在导入时都会被转换为0而不是NULL。这意味着在这些数据上进行平均操作会得到错误的输出。
TSV文件不包括文本限定符,但是使用一些虚拟数据测试限定符并不能解决这个问题。
可以通过导入到VARCHAR列中来保留NULL,但这远非理想。是否有一种方法可以指示SSIS导入/导出向具有数值数据类型的列中导入平面文件中的空白值作为NULL而不是0?

请查看我在此处的答案:https://stackoverflow.com/questions/1090526/cant-import-as-null-value-sql-server-2008-tsv-file/1090618。向导没有公开您需要的正确设置... - gbn
这是否意味着在导入/导出向导中没有开启“保留空值”设置的方法?在可选方案中,哪种是导入数据最有效的方式?到目前为止,我只使用向导进行导入。如果这看起来像一个基本问题,我很抱歉 - 我不是程序员,我的工作是分析数据并根据它生成报告,但为了做到这一点,我需要将其导入数据库。 - Lethanta
那是正确的,抱歉。其他导入数据的方式更适合“程序员”。 - gbn
1个回答

2

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


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

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

在Flat File Source Editor框中,有一个“保留源中的空值作为数据流中的空值”的复选框。勾选此项似乎可以解决此问题。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接