我有一个包含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。
答案 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]因为这是我最熟悉的方法。