SQL SSIS使用派生列转换来处理空数据。替代方案?

时间:2012-10-25 03:30:16

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

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

目前,我在Derived Column中设置以下表达式:

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

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

等...

由于我有200多列,我必须在Derived Transform中执行200次,是否有更好的方法使用SSIS处理它?<​​/ p>

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

2 个答案:

答案 0 :(得分:3)

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

Select ISNULL(EmployeeId,'')

Select COALESCE(EmployeeId,'')

希望这有帮助。

答案 1 :(得分:0)

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