如何跳过脚本组件中的一行

时间:2010-10-17 15:29:44

标签: sql-server ssis

如何在不使用条件拆分组件的情况下跳过脚本组件中的某些记录?

1 个答案:

答案 0 :(得分:8)

要跳过脚本组件中的记录,您需要使用异步输出创建脚本组件。默认情况下,脚本组件使用同步输出,这意味着输入到脚本的每一行也将是脚本的输出。

如果您正在使用SQL Server 2005,我认为您必须从一个新的Script组件开始,因为一旦您使用了Script组件,就无法从同步更改为异步。在SSIS for SQL Server 2008中,您可以将脚本组件从同步切换到异步。

编辑脚本组件,然后选择“输入和输出”选项卡。在树视图中选择输出缓冲区。选择SynchronousInputID属性并将值更改为None。在树视图中选择“输出列”分支。您必须使用“添加列”按钮为每个输入列创建一列。

现在您可以编辑脚本了。在处理行的过程中,您将添加一些代码来控制跳过和输出行。如果要跳过一行,将使用Row.NextRow()命令,其中Row是输入缓冲区的名称。这是一个例子:

    If Row.number = 5 Then
        Row.NextRow()
    End If

在此示例中,将跳过数字列中包含5的行。

应用其他转换逻辑后,您需要指明该行应转到输出。这是使用Output0.AddRow()命令启动的,其中Output0是输出缓冲区的名称。 AddRow函数创建下一个输出缓冲区,该缓冲区将前一行推出Script组件。创建新行后,必须为新行中的列指定值。

    Output0Buffer.AddRow()
    Output0Buffer.number = Row.number

此示例向缓冲区添加一个新行,并将输入缓冲区中的数字值分配给输出缓冲区中的数字列。