SSIS 中的合并转换

SSIS 中的合并转换用于合并两个输入(例如表或文件)并生成一个输出。当我们将错误路径数据(处理错误后)与正常数据合并时,合并转换非常有用。此合并转换使用键列值将数据插入目标列。

例如,我们使用 条件拆分 根据条件拆分数据。如果我们想在对它们执行更多操作后将它们合并回来怎么办?在这些情况下,我们可以使用 SSIS 合并转换将它们合并回来。

注意:合并转换只会产生一个输出,不支持错误输出。

合并与 Union All 转换的区别

SSIS 合并转换与Union All相似,但合并有一些限制

合并Union All
应用合并转换之前,数据应按排序顺序排列无需对数据进行排序
合并转换的输出将生成排序后的数据输出将是未排序的数据。
它只接受 2 个输入。它可以接受两个以上的输入。

SSIS 中的合并转换示例

我们有两个不同的SQL Server表,例如 Sales 2 和 Sales 3,其中存储了产品的销售数据。我们希望将所有相关信息合并到一个数据库表中。

步骤 1:将数据流任务从工具箱拖放到控制流区域,并将其重命名为 SSIS 中的合并转换

Data Flow Task 1

双击数据流任务将带我们进入数据流区域。更多转换>>点击这里

步骤 2:将两个 OLE DB 源从工具箱拖放到数据流区域。然后,双击数据流区域中的第一个 OLE DB 源,打开连接管理器设置,并提供一个选项来选择保存源数据的表。在这里,我们选择 Sales2 表作为源。

Choose OLE DB Connection manager and Table  2

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

Check Input columns 3

双击第二个 OLE DB 源以使用 Sales 2 表进行配置。

Choose Second Input Database and Table 4

重复步骤 3 以验证列。

步骤 4:拖放两个排序转换以对表的输入进行排序。请参考排序转换文章以了解排序转换的配置。

Merge Transformation in SSIS 5

步骤 5:双击排序转换进行配置。在这里,我们按颜色排序,然后按英文产品名称升序排序。

Merge Transformation in SSIS 6

提示:SSIS 合并转换在输入行未排序的情况下将无法工作。因此,排序转换在合并之前是必需的。

对排序转换 1 也执行相同操作。

Merge Transformation in SSIS 7

步骤 6:现在将合并转换拖放到工具箱中,将排序后的表合并到一个表中

当您将排序转换的输出箭头拖到合并转换时,会出现一个输入输出选择窗口,用于选择它是合并输入 1 还是合并输入 2,如以下屏幕截图所示。

Merge Transformation in SSIS 8

单击确定,然后拖放排序转换 1 的输出箭头。在这里,合并输入 2 已被智能自动选择。

步骤 7:双击 SSIS 合并转换并进行配置。数据基于颜色和英文产品名称列插入到目标表中。

Merge Transformation in SSIS 9

步骤 8:将 OLE DB 目标拖放到数据流区域,然后双击它以配置目标服务器和目标表以存储合并转换输出

OLE DB Destination editor 10

在这里,我们选择了数据库和 [Merge Transformation] 作为目标表

步骤 9:使用映射选项卡检查输入列是否与目标列匹配

Check Input and Output Columns Mapping 11

我们完成了 SSIS 合并转换包的设计。让我们执行该包。

SSIS Merge Transformation 12

现在,我们将在SQL Management studio 中检查合并输出。

Destination Table 13