You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SSIS平面文件源中跳过列数不足的错误行?

解决SSIS导入CSV时跳过列数不匹配行的问题

我之前处理过完全相同的场景——导入固定17列的CSV时总有几行列数不对,导致包直接失败。单纯设置列忽略没用,因为SSIS是先校验整行的列数再处理列。下面是几个亲测有效的方案:

方案一:利用平面文件源的错误输出重定向(最简单)

这是SSIS原生的错误处理方式,不需要写代码:

  • 打开平面文件源编辑器,切换到「错误输出」选项卡
  • 在列表里找到对应错误(通常是代码0xC0202092,描述为“列数与预期列数不匹配”)
  • 把该错误的「处理方式」从默认的失败组件改成重定向行
  • 接着在数据流里添加一个组件(比如「行计数」或者「平面文件目标」),连接平面文件源的「错误输出」端口到这个组件
  • 这样执行包时,列数不对的行会被自动转到错误输出流,主数据流正常执行,包不会失败

方案二:用脚本组件预处理CSV(灵活处理复杂情况)

如果你的CSV有特殊格式(比如字段带引号包裹、包含逗号),平面文件源的错误输出可能不够灵活,这时候可以用脚本组件自定义过滤逻辑:

  1. 删除原来的平面文件源,添加一个脚本组件,选择「源」类型
  2. 在脚本编辑器里,先添加17个输出列(和目标表的列对应)
  3. 编写C#代码读取CSV,过滤列数不符的行:
using System.IO;
using Microsoft.VisualBasic.FileIO; // 需要添加Microsoft.VisualBasic引用

public override void CreateNewOutputRows()
{
    string csvPath = Variables.CSVFilePath; // 提前定义好存储CSV路径的变量
    using (TextFieldParser parser = new TextFieldParser(csvPath))
    {
        parser.TextFieldType = FieldType.Delimited;
        parser.SetDelimiters(",");
        parser.HasFieldsEnclosedInQuotes = true; // 处理带引号的字段
        parser.ReadLine(); // 如果有表头,跳过第一行

        while (!parser.EndOfData)
        {
            try
            {
                string[] fields = parser.ReadFields();
                if (fields != null && fields.Length == 17)
                {
                    Output0Buffer.AddRow();
                    // 给每个输出列赋值,比如:
                    Output0Buffer.Col1 = fields[0];
                    Output0Buffer.Col2 = fields[1];
                    // ... 依次对应到第17列
                }
            }
            catch (MalformedLineException ex)
            {
                // 可选:记录错误行到日志变量
                Variables.ErrorLog += $"Invalid line at {parser.LineNumber}: {ex.Message}{Environment.NewLine}";
            }
        }
    }
}
  1. 把脚本组件的输出连接到后续的转换/目标组件即可

额外注意事项

  • 确认你的平面文件连接管理器里的列数是17,分隔符设置和CSV一致(比如不要把分号当成逗号)
  • 如果CSV有表头,确保表头行的列数是17,否则平面文件源会默认列数不对
  • 可以在包的「事件处理程序」里添加「OnError」事件,记录错误详情到日志表,方便后续排查

内容的提问来源于stack exchange,提问作者arcee123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:56:41