2

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

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

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

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

ETC...

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

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

4

2 回答 2

3

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

Select ISNULL(EmployeeId,'')

或者

Select COALESCE(EmployeeId,'')

希望这可以帮助。

于 2012-10-25T06:06:57.400 回答
0

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

于 2012-10-28T01:04:30.530 回答