3

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

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

数据问题 (nvarchar255)

errors code l075 showing,,,re test.

OLE DB Source for Comment col

在此处输入图像描述

派生列

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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

目标组件

在此处输入图像描述

例外

在此处输入图像描述

[Inspection Failures Destination [206]] 错误:数据转换失败。“注释”列的数据转换返回状态值 4 和状态文本“文本被截断或一个或多个字符在目标代码页中不匹配。”。

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

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

[检查失败源 [128]] 错误:尝试将行添加到数据流任务缓冲区失败,错误代码为 0xC0047020。

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

4

2 回答 2

2

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

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

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

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

在此处输入图像描述

转换要求在此处详细说明

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

于 2012-11-30T10:59:40.613 回答
0

在不替换注释列的情况下,您可以创建另一个列并将新的派生列映射到目标列并查看。

于 2012-11-30T08:52:56.623 回答