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

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

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

问题在于,具有数字数据类型(例如,smallint、float 等)的列中的所有空白值在导入时都被转换为 0,而不是 NULL。这意味着对这些数据进行平均会给出错误的输出。

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

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

最佳答案

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

<小时/>

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

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

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

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

关于sql - 使用 SSIS 导入/导出向导在数字列中保留 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2328649/

相关文章:

sql-server - 为什么在分区 'SWITCH' 语句中源和目标必须驻留在同一文件组中?

sql - T-SQL:按有序列选择

sql-server-2005 - 跨数据库的关系和约束

sql - 想要打印申报日期和月份

使用 UNIONS 和 GROUP BY 的 SQL 查询

mysql - 如何基于在 SQL 中使用复杂语句的 WHERE JOIN 两个表

sql - 何时使用 "ON UPDATE CASCADE"

mysql - 如何获取所有行以及列名作为第一行

sql - 错误 1111 (HY000) : Invalid use of group function

sql-server - 仅根据一个字段选择与先前记录相比发生更改的记录