【问题标题】:SQL SSIS using Derived Column Transform to deal with null data.. alternatives?SQL SSIS 使用派生列转换来处理空数据.. 替代方案?
【发布时间】:2012-10-25 03:30:16
【问题描述】:

我有一个包含 200 多列的源表,我将其放入 SSIS 并使用“OLEDB 源”组件来提供数据,然后将流映射到派生列转换以处理空数字/日期/文本用空白值替换数据。

目前,我在派生列中设置以下表达式:

ISNULL([EMPLOYEE ID]) ? "" : [EMPLOYEE ID]

ISNULL([EMPLOYEE FNAME]) ? "" : [EMPLOYEE FNAME]

等等……

由于我有 200 多个列,我必须在派生转换中执行 200 次,是否有更好的方法使用 SSIS 来处理这个问题?

在 Windows 2008R2 上运行 SQL Server 2008 Standard。

【问题讨论】:

    标签: sql sql-server-2008 tsql ssis data-warehouse


    【解决方案1】:

    在 SSIS 中,您可以使用派生列/脚本转换[as transformation] 并编写代码以将 NULL 转换为空白。 SSIS 中没有其他选择。 SSIS 将创建缓冲区来处理计算。它会减慢你的 SSIS 包。我的建议是尝试在 SQL 查询中使用 ISNULL 函数或 COALESCE 函数,并将 NULL 转换为空白,这样所有的转换都将在 Serverside 本身发生。

    Select ISNULL(EmployeeId,'')
    

    Select COALESCE(EmployeeId,'')
    

    希望这会有所帮助。

    【讨论】:

    • 同意 - 在数据库服务器上处理空值之类的东西通常要好得多,除非 SSIS 机器比数据库服务器强大得多(通常不是这样) .
    • 另外值得一提的是,您可以在数据库中的视图中执行此操作,这可能比将查询嵌入到 SSIS 包本身中更方便。
    【解决方案2】:

    我最终还是坚持使用 SSIS 的派生列转换并插入每一列并检查 ISNULL([EMPLOYEE FNAME]) 吗? "" : [EMPLOYEE FNAME] 因为这是我最熟悉的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      相关资源
      最近更新 更多