在SSIS中使用Merge Join合并两个相似的表
Using Merge Join in SSIS to merge two similar tables
我在两个具有相同架构的不同服务器上有两个 table。为简单起见,假设每个 table 有 3 个字段。我正在尝试创建一个 SSIS 包,它从 table 中获取数据并将其合并到一个记录集中。
我添加了两个 OLE DB 源,它们从两个 table 中获得相同的三个字段。然后我对每个进行排序转换,然后流入合并连接。我在 Merge Join 上将联接类型设置为 "Full Outer Join"。我可以 select 所有六个字段,并使用来自合并连接的数据查看器查看输出。
假设每个来源中有 25 条记录 table。在数据查看器中,我最终得到 50 条记录 - 25 条在最后三个字段中为 NULL,25 条在前三个字段中为 NULL。我希望输出为 50 条记录,其中数据仅包含三个字段。我在这里做错了什么?我应该使用其他类型的合并选项吗?
我将不胜感激任何关于如何解决本应是一项简单任务的建议。谢谢!
您使用的 merge join
的输出是正确的,因为您使用的是 full outer join
。要解决您的问题,请使用 merge
转换而不是 merge join
。这会将您的两个排序数据流合并为一个排序数据流。您已经根据您的描述正确设置了数据流(它应该看起来像这样):
可在此处找到文档:https://msdn.microsoft.com/en-us/library/ms141703.aspx
我在两个具有相同架构的不同服务器上有两个 table。为简单起见,假设每个 table 有 3 个字段。我正在尝试创建一个 SSIS 包,它从 table 中获取数据并将其合并到一个记录集中。
我添加了两个 OLE DB 源,它们从两个 table 中获得相同的三个字段。然后我对每个进行排序转换,然后流入合并连接。我在 Merge Join 上将联接类型设置为 "Full Outer Join"。我可以 select 所有六个字段,并使用来自合并连接的数据查看器查看输出。
假设每个来源中有 25 条记录 table。在数据查看器中,我最终得到 50 条记录 - 25 条在最后三个字段中为 NULL,25 条在前三个字段中为 NULL。我希望输出为 50 条记录,其中数据仅包含三个字段。我在这里做错了什么?我应该使用其他类型的合并选项吗?
我将不胜感激任何关于如何解决本应是一项简单任务的建议。谢谢!
您使用的 merge join
的输出是正确的,因为您使用的是 full outer join
。要解决您的问题,请使用 merge
转换而不是 merge join
。这会将您的两个排序数据流合并为一个排序数据流。您已经根据您的描述正确设置了数据流(它应该看起来像这样):
可在此处找到文档:https://msdn.microsoft.com/en-us/library/ms141703.aspx