SSIS导出到CSV文件失败

时间:2012-11-30 08:40:06

标签: sql sql-server ssis

我正在尝试使用SSIS将SQL Server 2005表的内容导出到csv文件。在数据流任务中,我有一个表的OLE DB源和文件的平面文件目的地。

复制数据时,我开始在某一行的某个列上出现故障,并且经过一些调查后发现问题出现在下面数据中的逗号

数据问题(nvarchar255)

errors code l075 showing,,,re test.

评论col的OLE DB源

enter image description here

派生列

鉴于这是问题,我在源和目标和目标对象之间创建了一个派生列对象,并尝试使用替换REPLACE(Comment,","," ")过滤掉逗号,但同一列仍然失败并出现以下错误。< / p>

enter image description here

enter image description here

enter image description here

enter image description here

目标组件

enter image description here

异常

enter image description here

[检查故障目的地[206]]错误:数据转换失败。 “Comment”列的数据转换返回状态值4和 状态文本“文本被截断或一个或多个字符没有 匹配目标代码页。“。

[检查故障目的地[206]]错误:无法复制 或转换“评论”列的平面文件数据。

[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PROCESSINPUTFAILED。
组件“检查失败”的ProcessInput方法 目的地“(206)失败,错误代码为0xC02020A0而 处理输入“平面文件目的地输入”(207)。该 已识别的组件从ProcessInput返回错误 方法。该错误特定于组件,但错误  是致命的,会导致数据流任务停止运行 在此之前可能会发布错误消息 有关失败的信息。

[Inspecton Failures Source [128]]错误:尝试 向数据流任务缓冲区添加一行失败并显示错误 代码0xC0047020。

[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。
组件“Inspecton Failures Source”上的PrimeOutput方法  (128)返回错误代码0xC02020C4。该组件返回 管道引擎调用PrimeOutput()时的失败代码。 失败代码的含义由组件定义, 但错误是致命的,管道停止执行 在此之前可能会发布错误消息 有关失败的信息。

2 个答案:

答案 0 :(得分:2)

好的,问题实际上似乎是文本中隐藏的非法字符

在下图中,顶行显示re test字符串前的方块。数据库中的注释列是一个nvarchar,显然使用了不同的字符集,因此我不能只使用CHAR(13)+ CHAR(10)来替换回车符。

修复包括将字段从nvarchar转换为varchar然后在转换器上执行替换?字符导致图像中的第二个修正

SELECT ID,
        REPLACE(REPLACE(CAST(Comment AS varchar(255)),'?',' '),',',' ') Comment
FROM tblInspectionFailures  WHERE (ID = 216899)

enter image description here

The conversion requirement is detailed here

这对我来说不应该是一个理想的解决方案,但确实有效。有没有人有其他选择。

答案 1 :(得分:0)

如果不替换注释列,您可以创建另一列并将新派生列映射到目标列,并查看。