在本文中,我们将使用Merge Join转换在两个SQL表上执行SSIS左外连接。在开始创建包之前,让我们看一下用于Merge Join转换的SSIS左外连接的两个源表。
数据库中的Employees表是

数据库中的 Department 表是

Merge Join转换的SSIS左外连接示例
步骤1:将数据流任务从工具箱拖放到控制流区域。并将其重命名为“使用Merge Join转换在SSIS中执行左外连接”。

双击数据流任务将带我们进入数据流区域。
步骤2:将两个OLE DB源拖放到数据流区域。然后,双击第一个OLE DB源以打开连接管理器设置。它还提供了一个选项来选择包含源数据的表。

从上面的屏幕截图中,您可以看到我们从数据库中选择了[Employees]表
步骤3:单击“列”选项卡以检查列。在此选项卡中,我们可以取消选中不需要的列。

步骤4:双击第二个OLE DB源以配置第二个表以在SSIS中执行左外连接。在这里,我们从数据库中选择[Department]

步骤5:重复步骤3

步骤6:将两个排序转换从工具箱拖放到数据流区域。并将OLE DB源的输出箭头连接到此转换。

步骤7:请配置排序转换。选中要排序的列,然后“传递”其余列。如果您忘记选择“传递”,则这些列不会出现在输出列中。
从源数据中,DepartID是Employees和Department表之间的连接键。因此,我们将Employees表按DepartID升序排序。

提示:Merge Join转换在没有对输入行进行排序的情况下无法工作。因此,在SSIS中应用左外连接之前,排序转换是强制性的。
单击排序转换1,然后使用id列按升序对Department表进行排序。

步骤8:现在,将Merge Join转换拖放到数据流区域,以对已排序的表执行左外连接。
配置Merge Join中的SSIS左外连接
当您将排序转换的输出箭头拖到Merge Join转换时,将出现“输入输出选择”窗口,以选择它是Merge Join左输入还是Merge Join右输入。

在这里,我们为Employees表选择了Merge Join左输入。单击确定,然后拖放排序转换1的输出箭头。在这里,Merge Join右输入由智能系统自动选择。
步骤9:双击Merge Join转换将打开Merge Join转换编辑器以对其进行配置。
Join Type提供了一个下拉列表,用于选择要在源数据上执行的连接类型(例如,SSIS中的内连接、左外连接和全外连接)。在此示例中,我们正在执行左外连接。这就是为什么我们从Join Type选项中选择了SSIS左外连接选项。

从上面的屏幕截图中,您可以看到Employees和Department表都使用DepartID和id列进行连接。因此,通过拖动箭头选择它们作为连接键。
现在,通过选中列名旁边的复选框,决定要将哪些列传输到目标表(传递列)。

从上面的屏幕截图中,您可以看到我们选择了[FirstName]、[LastName]和[Department]列作为输出列。
这意味着SSIS中的左外连接将生成Employees表中的所有[名字]、[姓氏]列行,以及[部门名称]列中DepartID等于任何id列数据的匹配行。所有不匹配的[部门名称]列行都将被视为NULL。
步骤10:将OLE DB目标拖放到数据流区域。接下来,双击它以配置目标服务器和目标表以存储Merge Join转换的输出

在这里,我们选择了下面的数据库和[使用Merge Join转换的左外连接]作为目标表
步骤 11:单击列选项卡以检查输入列是否与目标列匹配。如果不匹配,请将相应的列分配给目标列。

我们完成了SSIS Merge Join包中左外连接的设计。让我们执行该包

现在,让我们打开Management Studio并从[使用Merge Join转换的左外连接]表中选择列。

评论已关闭。