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

SSIS脚本组件填充变量:记录类型值提取与应用求助

SSIS脚本组件完善指导

问题背景

我是SSIS脚本组件的新手,目前思路方向正确。我有一个包含多条记录的平面文件,每条记录带有类型1、4、5等标识,需实现以下逻辑:

  • 类型1记录:提取第5列的值存入变量
  • 类型4记录:提取第3、5、6列的值存入对应变量
  • 类型5记录:将上述变量值添加到该类记录的末尾列中

现有代码

Public Class ScriptMain
    Inherits UserComponent

    Private Company_Code As String

    Public Overrides Sub PostExecute()
        MyBase.PostExecute()
        Me.Variables.Filter_Company_Code = Company_Code
    End Sub

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

        If (Row.RecordType = "1") Then
            Company_Code =
        ElseIf (Row.RecordType = "4") Then

        End If
    End Sub

End Class

完善步骤

1. 补充类型1记录的赋值逻辑

在Row.RecordType = "1"的分支中,将第5列的值赋值给Company_Code变量。注意替换代码中的Column5为实际列名(需提前在脚本组件的输入列中勾选该列):

If (Row.RecordType = "1") Then
    ' 处理空值避免报错
    If Not Row.Column5_IsNull Then
        Company_Code = Row.Column5
    End If

2. 新增类型4记录的变量与赋值

首先在类中定义存储类型4列值的私有变量,然后在对应分支中完成赋值:

' 在类顶部新增变量定义
Private Company_Code As String
Private Type4_Col3 As String
Private Type4_Col5 As String
Private Type4_Col6 As String

' 在Input0_ProcessInputRow方法的类型4分支中赋值
ElseIf (Row.RecordType = "4") Then
    If Not Row.Column3_IsNull Then Type4_Col3 = Row.Column3
    If Not Row.Column5_IsNull Then Type4_Col5 = Row.Column5
    If Not Row.Column6_IsNull Then Type4_Col6 = Row.Column6

3. 处理类型5记录的字段追加

首先在脚本组件的输出列中添加需要追加的字段(如Out_CompanyCode、Out_Type4_Col3等),然后新增类型5的处理分支:

ElseIf (Row.RecordType = "5") Then
    ' 将保存的变量值赋值给输出列
    Row.Out_CompanyCode = Company_Code
    Row.Out_Type4_Col3 = Type4_Col3
    Row.Out_Type4_Col5 = Type4_Col5
    Row.Out_Type4_Col6 = Type4_Col6

4. 扩展包级变量的赋值(可选)

如果需要将类型4的变量值也存入包级变量,在PostExecute方法中补充赋值:

Public Overrides Sub PostExecute()
    MyBase.PostExecute()
    Me.Variables.Filter_Company_Code = Company_Code
    Me.Variables.Filter_Type4_Col3 = Type4_Col3
    Me.Variables.Filter_Type4_Col5 = Type4_Col5
    Me.Variables.Filter_Type4_Col6 = Type4_Col6
End Sub

5. 关键注意事项

  • 确保脚本组件已在输入列选项卡中勾选所有需要访问的列(RecordType、第3/5/6列等)
  • 若存在多条类型1或4的记录,当前逻辑会用最新一条记录的值覆盖变量,若需保留多条记录需调整为集合存储
  • 始终添加空值判断,避免因源数据为空导致运行时错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:45:35