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

SSIS需求:在每行间插入固定值99作为尾记录生成固定宽度文件

在SSIS中为每行数据插入固定值99的尾记录

嘿,针对你在SSIS里生成固定宽度文件的需求——要在每条解析好的数据行后面插入一行固定值为99的尾记录,我给你分享两种实用的实现方法,亲测好用:

方法1:用脚本组件(最灵活,适合每行插记录)

这是最直接的方式,能精准控制每一行的输出:

  • 先把你的数据源(比如从数据库来的OLE DB源)拖到数据流里,然后连接一个脚本组件(记得选「转换」类型)。
  • 打开脚本编辑器,在「输入列」里勾选所有需要输出的列(就是你提到的Col1到Col5这些)。
  • 切换到「输入和输出」选项卡,确认默认输出是启用的。如果需要区分行类型,还可以给输出加个RecordType列(字符串类型,长度按需设置)。
  • 点击「编辑脚本」,用C#写两行核心逻辑:先输出原始数据行,再输出99的尾记录行。这里要注意贴合你的固定宽度要求,比如列的长度、空格填充:
    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        // 先输出原始数据行
        Output0Buffer.AddRow();
        Output0Buffer.Col1 = Row.Col1;
        Output0Buffer.Col2 = Row.Col2;
        Output0Buffer.Col3 = Row.Col3;
        Output0Buffer.Col4 = Row.Col4;
        Output0Buffer.Col5 = Row.Col5;
    
        // 再输出99尾记录行,按固定宽度填充
        Output0Buffer.AddRow();
        Output0Buffer.Col1 = "99"; // 这列放99
        Output0Buffer.Col2 = new string(' ', 3); // 假设Col2宽度3,用空格填充
        Output0Buffer.Col3 = new string(' ', 10); // Col3宽度10,空格填充
        Output0Buffer.Col4 = new string(' ', 7); // Col4宽度7,空格填充
        Output0Buffer.Col5 = new string(' ', 8); // Col5宽度8,空格填充
    }
    
  • 保存脚本后,把脚本组件的输出连到平面文件目标,配置好固定宽度格式就搞定了。

方法2:Union All + 派生列(适合文件末尾加单条尾记录,备选)

如果你的需求是整个文件最后加一条99尾记录(不是每行之后),可以用这个更简单的方式:

  • 给原始数据流加个派生列,新增RowType列,值设为"Data"。
  • 拖一个生成行组件,生成一条空记录,再用派生列设置所有列的固定宽度值(比如Col1设为"99",其他列填对应长度的空格),同时新增RowType列值为"Trailer"。
  • 用Union All把两个数据流合并,最后连到平面文件目标就行。

关键提醒

  • 一定要严格对齐固定宽度的要求,每个列的长度、填充的空格数都要和接收系统的格式一致,不然生成的文件会报错。
  • 测试的时候先输出到本地文本文件,检查每行后面的99记录是否正确,格式有没有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:32:02