使用派生列转换处理空数据的SQL SSI。。选择?
我有一个包含200多列的源表,我将其放入SSI中,并使用“OLEDB source”组件将数据输入,然后将流映射到派生列转换,以处理空数值/日期/文本数据,方法是将其替换为空值 目前,我正在派生列中设置以下表达式:使用派生列转换处理空数据的SQL SSI。。选择?,sql,sql-server-2008,tsql,ssis,data-warehouse,Sql,Sql Server 2008,Tsql,Ssis,Data Warehouse,我有一个包含200多列的源表,我将其放入SSI中,并使用“OLEDB source”组件将数据输入,然后将流映射到派生列转换,以处理空数值/日期/文本数据,方法是将其替换为空值 目前,我正在派生列中设置以下表达式: ISNULL([EMPLOYEE ID]) ? "" : [EMPLOYEE ID] ISNULL([EMPLOYEE FNAME]) ? "" : [EMPLOYEE FNAME] 等等 因为我有200多列,所以我必须在派生转换中执行200次,有没有更好的方法使用SSI来处理这
ISNULL([EMPLOYEE ID]) ? "" : [EMPLOYEE ID]
ISNULL([EMPLOYEE FNAME]) ? "" : [EMPLOYEE FNAME]
等等
因为我有200多列,所以我必须在派生转换中执行200次,有没有更好的方法使用SSI来处理这个问题
在Windows 2008R2上运行SQL Server 2008标准。在SSIS中,您可以使用派生列/脚本转换[作为转换]并编写代码以将空值转换为空。SSIS中没有其他替代方案。SSI将创建缓冲区来处理计算。它会降低SSIS包的速度。我的建议是在SQL查询中尝试使用IsNULL函数或CuleSeCe函数,并将NULL转换为空白,这样所有的转换都会发生在服务器端本身。
Select ISNULL(EmployeeId,'')
或
希望这有帮助。我最终坚持SSIS的派生列转换,插入每一列并检查ISNULL([EMPLOYEE FNAME])?“”:[EMPLOYEE FNAME]因为这是我最熟悉的方法。同意-通常最好在数据库服务器上处理null之类的内容,除非SSIS机器比DB服务器强大得多(通常不是这样)。还值得一提的是,您可以在数据库的视图中执行此操作,这可能比将查询嵌入SSIS包本身更方便。
Select COALESCE(EmployeeId,'')