我正在尝试使用SSIS将SQL Server 2005表的内容导出到csv文件。在数据流任务中,我有一个表的OLE DB源和文件的平面文件目的地。
复制数据时,我开始在某一行的某个列上出现故障,并且经过一些调查后发现问题出现在下面数据中的逗号
数据问题(nvarchar255)
errors code l075 showing,,,re test.
评论col的OLE DB源
派生列
鉴于这是问题,我在源和目标和目标对象之间创建了一个派生列对象,并尝试使用替换REPLACE(Comment,","," ")
过滤掉逗号,但同一列仍然失败并出现以下错误。< / p>
目标组件
异常
[检查故障目的地[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()时的失败代码。
失败代码的含义由组件定义,
但错误是致命的,管道停止执行
在此之前可能会发布错误消息
有关失败的信息。
答案 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)
The conversion requirement is detailed here
这对我来说不应该是一个理想的解决方案,但确实有效。有没有人有其他选择。
答案 1 :(得分:0)
如果不替换注释列,您可以创建另一列并将新派生列映射到目标列,并查看。