我有来自两个不同源位置的数据需要合并为一个。我假设我想用合并或合并连接来做这个,但我不确定我究竟需要做什么。
Table 1
与Table 2
具有相同的字段,但数据不同,这就是我希望将它们合并到一个目标表中的原因。我试图用SSIS做这个,但我从来没有必要合并数据。
我遇到的另一个问题是两者之间的某些数据是重复的。我怎么只保留1个重复的记录?
答案 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的情况下做到这一点。