处理  在SSIS

时间:2017-04-16 23:45:06

标签: sql-server ssis

在SSIS中,我有一个包处理从一个表转储到另一个表的数据。但是,在程序包完成执行后,我注意到我的列有&#x0D代替回车。

以下是处理此列的查询的一部分。

(select cast((text) as varchar(max)) from [table] 
where columna = x.columna for xml path (''), type)

当我在SSMS上测试此查询时,使用type关键字修复了此问题。

在此之前我还遇到了另一个错误,我收到了消息

  

列“MyColumn”无法在unicode和非unicode字符串数据类型之间进行转换。

所以我不得不修改受影响的列以输出到Unicode Text Stream (DT_NTEXT)以避免任何错误(使用Unicode String会导致截断)。

2 个答案:

答案 0 :(得分:0)

在SSIS包中,我将假设您正在使用OLEDB Source从Sql server读取数据。

您可以简单地使用与数据源相同的SQL查询,而不是使用表名

enter image description here

答案 1 :(得分:0)

在此语句末尾添加.value('.',nvarchar(max)')会删除结果中显示的所有&#x0D

最终查询应如下所示:

(select cast((text) as varchar(max)) from [table1] 
where columna = [table2].columna for xml path (''), type).value('.',nvarchar(max)')

这是为了解决我在SSIS处理特殊字符和unicode时遇到的另一个问题。

可以找到包含解决方案的网站here