在SSIS中导入制表符分隔文件,其中一个字段大于255个字符

Jam*_*han 2 ssis sql-server-2008

我正在导入制表符分隔文件并收到此错误.

错误:任务3处的0xC02020A1 - 核心数据的数据加载,平面文件源[14]:数据转换失败.列"列85"的数据转换返回状态值4和状态文本"文本被截断或一个或多个字符在目标代码页中不匹配.".

错误:任务3处的0xC020902A - 核心数据的数据加载,平面文件源[14]:"输出列"列85"(448)"失败,因为发生了截断,截断行处置"输出列"列85" (448)"指定截断失败.指定组件的指定对象上发生截断错误.错误:任务3处的0xC0202092 - 核心数据的数据加载,平面文件源[14]:在数据行540上处理文件"C:\ Metrics\report-quoteCoreData.csv"时发生错误.错误:任务3处的0xC0047038 - 引用核心数据的数据加载,SSIS.Pipeline:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED.组件"Flat File Source"(14)上的PrimeOutput方法返回错误代码0xC0202092.当管道引擎调用PrimeOutput()时,组件返回失败代码.失败代码的含义由组件定义,但错误是致命的,管道停止执行.在此之前可能会发布错误消息

当我在其中一个字段上设置截断错误时忽略它似乎导入.

不幸的是我得到了

Column A ( customer ) Column B ( Location ) Column C ( should be Y or N )
Jimmy                        New York               ssssss  ( instead of Y ) 
Run Code Online (Sandbox Code Playgroud)

在这一行中,我有一个超过255个字符的早期字段,并导致SSIS中出现ERROR.如果我告诉它忽略错误,我会为该行插入错误的数据."Ssss ...."是超过255个字符的字段.

这里有什么解决方案?

bil*_*nkc 6

在平面文件连接管理器中,您需要调整每列不足以容纳传入值的OutputColumnWidth属性.在您的示例中,Column 85当前定义为255个字符,因此将其提升到合理的值.目标是使该值足够大以覆盖传入的数据,但不要太大以至于浪费内存空间.

更改Connection Manager后,任何使用相同CM的数据流都会报告列定义已更改,您需要进入它们,双击并让新的元数据逐渐减少.

在此输入图像描述

我已经看到在某些类型的转换后元数据不会自动刷新的情况(Union All我正在看着你).作为完整性检查,双击目标之前的连接器(可能是OLE DB目标).单击"元数据"选项卡,确保Column 85为500或您指定的任何值.如果不是这样的话,那么你就可以按照自己的方式回到链条上找出它的位置.最简单的解决方案通常是删除令人不安的转换并重新添加.

在此输入图像描述