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

SSIS脚本组件实现错误行输出问题求助

解决SSIS Script Component无法输出无效CSV行的问题

嘿,我来帮你搞定这个麻烦!要把那些列数不符的无效CSV行输出到单独文件,核心是给Script Component加个专门的输出流,还要确保能拿到原始行内容——不然输出的无效行根本没意义。下面一步步来操作:

1. 给Script Component新增无效行输出流

打开Script Component编辑器,切换到「Inputs and Outputs」标签页:

  • 右键点击「Outputs」→ 选择「Add Output」,给这个新输出起个好记的名字,比如InvalidRowsOutput
  • 选中这个新输出,在右侧属性面板把SynchronousInputID设置为None(让它成为独立的异步输出,和有效行的数据流彻底分开)
  • 给InvalidRowsOutput添加一列,比如叫RawRow,数据类型选DT_STR或者DT_WSTR,长度设得足够大(比如4000,根据你的CSV实际行长度调整)

2. 修改VB.Net代码处理无效行

首先得确保你的输入流里包含原始整行内容:如果还没有,去Flat File Source那边配置——打开它的高级编辑器,在「Input and Output Properties」里新增一个「Raw Data」列,或者用派生列组件把整行内容存成一个新列(比如命名为RawRowContent)。

然后调整你的代码:

' 在类级别声明无效行输出的缓冲区变量
Private invalidOutputBuffer As InvalidRowsOutputBuffer

Public Overrides Sub PreExecute()
    MyBase.PreExecute()
    ' 获取无效行输出的缓冲区实例
    invalidOutputBuffer = Me.InvalidRowsOutputBuffer
End Sub

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Dim isValid As Boolean = True
    
    ' 这里是判断行是否有效的核心逻辑:检查列数是否为24
    ' 注意:如果CSV包含带逗号的引号字段,别直接用Split,用TextFieldParser解析更准确
    Dim rawRow As String = Row.RawRowContent ' 假设原始行内容存在这个列里
    Dim columns As String() = rawRow.Split(","c)
    If columns.Length <> 24 Then
        isValid = False
    End If
    
    ' 保留你原有处理有效行的逻辑
    If isValid Then
        ' 这里放你原来处理有效行的代码,比如给输出列赋值等操作
        ' ...
    Else
        ' 将无效行写入专门的输出流
        invalidOutputBuffer.AddRow()
        invalidOutputBuffer.RawRow = rawRow
    End If
End Sub

Public Overrides Sub PostExecute()
    MyBase.PostExecute()
    ' 通知SSIS无效行输出已完成
    invalidOutputBuffer.SetEndOfRowset()
End Sub

3. 连接输出到目标平面文件

回到SSIS数据流设计界面,把Script Component的InvalidRowsOutput拖线到「Flat File Destination」,配置好目标文件的路径和格式,这样无效行就会自动写入指定文件了!

额外提醒

  • 如果你的CSV里有带逗号的字段(比如"张三,李四",25这种格式),直接用Split(",")会把字段拆错,这时候用Microsoft.VisualBasic.FileIO.TextFieldParser来解析才是正确的做法
  • 要是Flat File Source已经自动把无效行转到错误输出了,那更省事——直接把错误输出连接到Flat File Destination就行,不用在Script Component里额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:46:13