我正在导入制表符分隔文件并收到此错误。
错误:任务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。 PrimeOutput方法 组件“Flat File Source”(14)返回错误代码0xC0202092。该 当管道引擎调用时,组件返回失败代码 PrimeOutput()。失败代码的含义由 组件,但错误是致命的,管道停止执行。 在此之前发布的错误消息可能包含更多
当我在其中一个字段上设置截断错误时忽略它似乎导入。
不幸的是我得到了
Column A ( customer ) Column B ( Location ) Column C ( should be Y or N )
Jimmy New York ssssss ( instead of Y )
在这一行上,我有一个超过255个字符的早期字段,导致SSIS中出现ERROR。如果我告诉它忽略错误,我会为该行插入错误的数据。 “Ssss ....”是超过255个字符的字段。
这里有什么解决方案?
答案 0 :(得分:6)
在平面文件连接管理器中,您需要调整每列不足以容纳传入值的OutputColumnWidth属性。在您的示例中,Column 85
当前定义为255个字符,因此将其提升到合理的值。目标是使该值足够大以覆盖传入的数据,但不要太大以至于浪费内存空间。
更改Connection Manager后,任何使用相同CM的数据流都会报告列定义已更改,您需要进入它们,双击并让新的元数据逐渐减少。
我已经看到在某些类型的转换之后元数据不会自动刷新的情况(Union All我正在看着你)。作为完整性检查,双击目标之前的连接器(可能是OLE DB目标)。单击“元数据”选项卡,确保Column 85
为500或您指定的任何值。如果不是,那么你得到以回到链条的方式来找出它所处的位置。最简单的解决方法通常是删除令人不安的转换并重新添加。
答案 1 :(得分:0)
我在导入包含超过255个字符的字段的CSV文件时遇到了这个问题,我使用python解决了该问题。
只需将CSV导入大熊猫数据框中,然后计算每行中每个字符串值的长度
然后按降序对数据框进行排序。这将使SSIS可以在扫描前3行以分配存储空间时为其分配最大空间
df = pd.read_csv(f,sheet_name=0,skiprows = 1)
df = df.drop(df.columns[[0]], axis = 1)
df['length'] = df['Item Description'].str.len()
df.sort_values('length', ascending=False, inplace=True)
writer = ExcelWriter('Clean/Cleaned_'+f[5:])
df.to_excel(writer,sheet_name='Billing',index=False)
writer.save()