SSIS:条件拆分结果变量

时间:2017-02-22 11:50:53

标签: sql-server ssis etl

我有条件需要根据条件(将只是一个int值)将条件分割结果提供给变量。有人可以帮忙怎么做?

我的实际包裹(数据流):

XML Source - > Conditional split (基于条件)2输出..基于条件的结果(将只是一个int值)需要将其传递给变量。怎么做到这一点?

3 个答案:

答案 0 :(得分:3)

纯SSIS方式 - 将您的数据流消耗到Recordset Destination,然后使用ForEach循环遍历它,为所需变量赋值。

答案 1 :(得分:2)

您必须使用脚本组件来实现此目的:

  • 创建一个脚本组件(选择它作为目标的类型)

enter image description here

  • 双击脚本组件并选择您的变量作为ReadWrite变量。 (在我的示例中,变量名为结果

enter image description here

  • 在脚本窗口中编写以下代码

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    
        If Not Row.inColumn_IsNull Then
            Variables.Result = Row.inColumn
        End If
    
    End Sub
    

旁注:在dataflowtask执行完成之前,变量值不会更改,要使用您在另一个dataflowtask继续工作的新值

答案 2 :(得分:0)

我知道有两种方法可以实现这一点。

首先:用C#脚本组件做,这是最简单的方法。 只需将一个脚本组件放在条件拆分后面,选择您的变量为“ReadWrite”,然后在代码中将其设置为:

Dts.Variables["yourvariable"].Value = Input0Buffer.Yourcolumn

我现在无法访问SSIS,所以我无法提供确切的代码,但这应该可以让您入门。

第二:写入表并使用“执行SQL”任务将其读回。我真的不喜欢这种方式; - )