如何在 SSIS 中的 source/destination 之间同步数据插入-更新-删除

How to sync data insert-update-delete between source/destination in SSIS

我是 SSIS 的初学者,我想知道一种在 source/destination 之间同步数据的简单方法,例如: 插入-更新-删除数据。

您可以通过Merge JoinConditional Split components实现Insert-Updet-Delete。 假设您在 SQL 服务器中有一个 table Employees 作为您的数据源组件,并且有一个 table EmployeesSTG 作为您的登台数据库中现有数据的源数据组件:

您在数据库应用程序源中的数据:

您需要对两个数据集进行排序,因为合并连接组件需要按升序或降序对数据进行排序,因此在这里我们将使用 SSIS 中可用的排序组件对数据进行升序排序:

这是 Sort component 的配置方式:

这是 Merge Join 的配置方式:

合并数据后,您需要拆分数据,因为您做了 left outer join 如果数据匹配,则只有两侧数据会在那里,否则右侧将被替换为 null 因此不匹配的数据具有 null 值右侧你将被视为新数据,因此你将插入它并休息你将明智地匹配数据列,例如如果 Position 与左侧不匹配那么你将更新它。

由于您已将数据拆分为 3 个部分,因此我们需要 3 个目的地。

1- 根据第一个条件数据将被插入,因此我们将使用 OLEDB Destination component.

2- 每秒更新条件数据,为此我们将使用 OLEDB Command component 编写更新命令:

UPDATE Employees
SET FullName=?,
Position=?
WHERE EmployeeID=?

这是映射概述:

3- 根据第三个条件,您将使用 OLEDB Command component 写入更新命令删除暂存 table 中的记录:

DELETE FROM Employees
WHERE EmployeeID=?

这是映射概述: