SSIS固定宽度文件导入短记录:无需重定义列的解决办法咨询
SSIS固定宽度文件最后一行导入问题解决方案
方案一:调整错误处理规则保留固定宽度格式
- 打开平面文件连接管理器,切换到高级标签页
- 找到你已经取消勾选的那个4字符最后一列,确认它的
输出列宽度设为4,然后把该列的截断错误处理方式改成「忽略失败」 - 回到平面文件源组件,确保该列未被勾选(不参与下游数据导入)
- 这样SSIS会忽略最后一行该列的长度不足错误,正常导入这条记录的其他所有列
方案二:切换到Ragged Right格式且保留原有列定义
- 打开平面文件连接管理器的常规标签页,把格式从「固定宽度」改成「右参差不齐(Ragged Right)」
- 重点:不要点击「重置列」按钮!直接切到高级标签页,核对所有列的起始位置和宽度和之前的配置完全一致
- 确认无误后保存配置,就能在保留原有150列定义的前提下,支持最后一行长度不足的情况
方案三:数据流内动态补全最后一行长度(无需修改原文件)
如果前两个方案不适用,可以用脚本组件处理:
- 在平面文件源之后添加一个脚本组件(选择「转换」类型)
- 打开脚本编辑器,在
Input0_ProcessInputRow方法中编写代码(以C#为例):
注:if (Row.SourceColumn.Length == 1330) { Row.SourceColumn = Row.SourceColumn.PadRight(1332, ' '); }SourceColumn替换成你实际用来接收整行数据的列名 - 处理后的行再导入到SQL目标表,全程不需要修改原始文件
文件格式示例
注意最后一条记录末尾的2个空格:
'555-1234 @À555-2345 @À555-3456,è@™555-4567 @À555-5678 '
内容的提问来源于stack exchange,提问作者babno
相关产品推荐
相关产品推荐

