【问题标题】:Retaining NULLs in numerical columns using SSIS Import/Export Wizard? [duplicate]使用 SSIS 导入/导出向导在数字列中保留 NULL? [复制]
【发布时间】:2011-01-20 16:21:58
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请查看我的answer here 向导未公开您需要的正确设置...
  • 这是否意味着在导入/导出向导中无法打开“保持空值”设置?在备选方案中,哪种方式是最有效的数据导入方式?到目前为止,我只使用向导进行导入。如果这似乎是一个基本问题,请道歉 - 我不是程序员,我的工作是分析数据并根据它生成报告,但为了做到这一点,我需要将它放入数据库。
  • 这是正确的,对不起。其他导入数据的方式更适合“程序员”

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


【解决方案1】:

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


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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多