SSIS 脚本组件作为转换

脚本组件是 SQL Server Integration Services 中最重要和最有用的组件之一。我们可以将此 SSIS 脚本组件用作源、目标和转换。

本文将向您展示如何将 SSIS 脚本组件用作转换,并附带一个实际示例。尽管为了演示目的,我们为脚本组件使用了简单的示例,但它设计用于执行稳健的工作。

例如,一些内置转换无法完成的工作,或者我们可以使用此 SSIS 脚本组件作为转换,将多个转换的工作合并到一个地方。

您还可以参考以下链接

在开始创建 SSIS 脚本组件作为转换包之前,让我们看一下我们将使用的数据表和数据。

Source Table

配置 SSIS 脚本组件作为转换

步骤 1:将“数据流任务”从工具箱拖放到“控制流”区域,并将其重命名为“脚本组件作为转换”。

Data Flow Task

双击数据流任务以打开数据流选项卡。有关更多转换,请单击此处

步骤 2:拖放“OLE DB 源”并双击它将打开“OLE DB 连接管理器”设置。

SSIS Script Component as Transformation 3

从下面的屏幕截图中,您可以观察到我们选择以下数据库作为源数据库,并选择 [MyEmployees] 作为源表。

SSIS Script Component as Transformation 4

步骤 3:单击列选项卡以验证列。在此选项卡中,我们还可以取消勾选不需要的列。

OLE DB Source Columns 5

步骤 4:将脚本组件从工具箱拖放到数据流区域。放置脚本组件后,会打开一个名为“选择脚本内容类型”的新弹出窗口。

在这里,我们想演示 SSIS 脚本组件作为转换。因此,我们选择“转换”选项。

SSIS Script Component as Transformation 6

步骤 5:双击脚本组件将打开以下编辑器来配置属性。尽管有很多属性,我们将探讨一些我们在日常编码中使用的重要功能。

  • 名称:请提供唯一的名称
  • 描述:简要描述脚本功能。提供有效的描述始终是一个好习惯。
  • ReadOnlyVariables:请选择您想在脚本中使用的变量,这些变量可以是用户定义的或系统默认的变量。请记住,选为 ReadOnlyVariables 的变量仅用于只读目的(我们无法更改它们)。
  • ReadWriteVariables:请选择您想在脚本中使用的变量。请记住,选为 ReadWriteVariables 的变量将根据我们的需求而改变。
Properties Editor window  7

步骤 6:您可以在“SSIS 脚本组件作为转换输入列”选项卡中核查输入列。

Input Name 8

步骤 7:在“输入和输出”选项卡中,转到“输出列”,然后在输出列下,我们将使用“添加列”按钮添加一个名为 FullName 的列。

SSIS Script Component as Transformation 9

这里,我们添加了 FullName 列,然后将数据类型从 Integer(默认)更改为 string [DT_STR]。

Data Type and Name

步骤 8:在“脚本”选项卡中,请单击“编辑脚本...”按钮来编写实际的 C# 脚本。

Click Edit button 11

单击“编辑脚本”后,它将打开 main.cs 类文件来编写 C# 代码。请在 Input0_ProcessInputRow(Input0Buffer Row) 函数中编写您的自定义代码。

C# Script Code

步骤 9:在此处添加您的自定义 C# 代码。在本例中,我们将连接名字、姓氏,然后将首字母转换为大写。

SSIS Script Component as Transformation Code 13

我们在上面的 SSIS 脚本组件作为转换屏幕截图中使用的代码是

C# 代码

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        /*
         * Add your code here
         */
        string name = Row.FirstName + " " + Row.LastName;
        Row.FullName = FirstLetterUppercase(name);
    }


    // Function to Convert the First Character to UpperCase 
    private string FirstLetterUppercase(string name)
    {
        // Check whether String is empty.
        if (string.IsNullOrEmpty(name))
        {
            return string.Empty;
        }
        // Converting First Character to Upper Case.
        return char.ToUpper(name[0]) + name.Substring(1);
    }

步骤 10:编辑脚本后,请关闭 main.cs 文件。接下来,拖放 OLE DB 目标并将脚本组件的输出箭头连接到这个新的 OLE DB 目标。

SSIS Script Component as Transformation 14

步骤 11:双击 OLE DB 目标并选择您已创建的 OLE DB 连接管理器。在此,我们在数据库中选择 SSIS 脚本组件作为转换表。

OLE DB Destination Editor 15

步骤 12:单击“映射”选项卡以检查源列是否已映射到目标列。

Mapping Input and Destination Columns

单击“确定”以完成创建我们的包。

步骤 13:右键单击“解决方案资源管理器”中的“SSIS 脚本组件作为转换”包,然后选择“执行包”。

SSIS Script Component as Transformation 17

上面的屏幕截图显示我们的 SSIS 脚本组件作为转换包已成功执行。让我们打开 Management Studio 并编写以下查询来查看数据。

SELECT [FirstName]
      ,[LastName]
      ,[FullName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [SSIS Script Component as Transformation]

输出

Destination Table

评论已关闭。