将来自两个源的数据合并到一个目标中,而不重复

时间:2014-12-16 20:18:12

标签: ssis merge

我有来自两个不同源位置的数据需要合并为一个。我假设我想用合并或合并连接来做这个,但我不确定我究竟需要做什么。

Table 1Table 2具有相同的字段,但数据不同,这就是我希望将它们合并到一个目标表中的原因。我试图用SSIS做这个,但我从来没有必要合并数据。

我遇到的另一个问题是两者之间的某些数据是重复的。我怎么只保留1个重复的记录?

3 个答案:

答案 0 :(得分:0)

您可以使用视图和UNION的组合,而不是每次表1或2更改时都需要再次更新全新表。换句话说,创建一个视图,该视图是两个表之间的UNION查询的结果。要删除重复项,您可以按任意列分组,唯一标识每条记录。

以下是使用分组依据删除重复项的UNION查询:

SELECT
    MAX (ID) AS ID,
    NAME,
    MAX (going)
FROM
    (
        SELECT
            ID :: VARCHAR,
            NAME,
            going
        FROM
            facebook_events
        UNION
            SELECT
                ID :: VARCHAR,
                NAME,
                going
            FROM
                events
    ) AS merged_events
GROUP BY
    NAME

(Postgres不是SSIS,但概念相同)

答案 1 :(得分:0)

使用union all Sort而不是Merge和Sort。因为合并转换需要两个排序的输入,性能会降低

1)给Source1& Source2作为UnionALL Transformation的输入 2)将UnionALL transfromation的输出提供给Sort转换,并检查删除重复的键。

答案 2 :(得分:-1)

这听起来像是一个非常经典的合并。创建源和目标连接。放入数据流任务。将两个源都放入数据流中。确保源都已排序并将它们连接到Merge。您可以在连接和合并之间添加排序转换,也可以在引入时使用查询对它们进行排序。如果在您的情况下可以使用查询,则更容易使用查询。在合并后放置一个排序转换,然后选中“删除具有重复排序值的行”框。这将照顾你的任何重复。将Sort转换连接到数据目标。

你也可以在没有SSIS的情况下做到这一点。