在SSIS中使用Merge Join来合并两个相似的表

时间:2015-11-10 14:58:30

标签: sql-server join ssis merge

我在两台具有相同架构的服务器上有两个表。为简单起见,我们假设每个表有3个字段。我正在尝试创建一个SSIS包,它从两个表中获取数据并将其合并到一个记录集中。

我添加了两个OLE DB源,它们从两个表中获得相同的三个字段。然后我对每个进行了一次Sort转换,然后流入Merge Join。我将连接类型设置为" Full Outer Join"在合并加入。我可以选择所有六个字段,并使用Merge Join中的数据查看器查看输出。

让我们说每个源表中有25条记录。在数据查看器中,我最终得到50条记录 - 其中25条在最后三个字段中为NULL,在前三个字段中为25条。我希望输出为50条记录,只有三个字段的数据。我在这做错了什么?我应该使用其他类型的合并选项吗?

我非常感谢有关如何解决应该是一项简单任务的任何建议。谢谢!

1 个答案:

答案 0 :(得分:1)

您正在使用的merge join输出正确,因为您使用的是full outer join。要解决您的问题,请使用merge转换而不是merge join。这会将您的两个已排序数据流合并为一个已排序的数据流。您已经从描述中正确设置了数据流(它应该如下所示):

SSIS merge transformation

可以在此处找到文档:https://msdn.microsoft.com/en-us/library/ms141703.aspx