首页 > 解决方案 > 如何使用 ssis 将数据从 mysql 插入到 ssms

问题描述

我们如何插入新数据或将数据从一个表更新到另一个表,从 MySQL 到 SQL Server,使用 ssis 而不是使用查找。

标签: mysqlsql-serverssisssmsupsert

解决方案


设计如下所示:

您将有 4 个表和 1 个视图:源、TMP_Dest(完全作为没有 PK 的源)、CHG_Dest(用于更改,完全作为没有 PK 的目标)、Dest(将有 PK)、FV_TMP_Dest(这是为了以防目标看起来不同于源 - 不同的字段类型)

SSIS 包:

1.使用 ExecuteSQLTask 并截断 TMP_Dest 因为它对于提取的数据只是临时的

使用 ExecuteSQlTask​​ 并截断 CHG_Dest 因为它对于提取的数据只是临时的

使用一个 DataFlowTask 将数据从 Source 加载到 TMP_Dest

定义两个变量 OperationIDInsert=1 和 OperationIDUpdate=2 (值不重要,你可以随意设置)->你将在5.点下面使用它们

使用另一个 DataFlowTask,您将拥有:

在左侧 OLE DB 源中,您将从视图中提取数据,按 PK 排序(不要忘记从高级编辑器中为 PK 字段设置 SortKeyPosition)

在右侧的 OLE DB 源中,您将从 PK 排序的 Dest 中提取数据(不要忘记从高级编辑器中为 PK 字段设置 SortKeyPosition)

这之间的左连接

在左侧(“插入侧”),您将拥有:一个派生列,您将在其中将 OperationIDInsert 变量分配为表达式,以及一个用于在 CHG_Dest 表中插入数据的 OLE DB 目标。这样,您将插入必须插入到目标表中的数据,并且您知道这一点,因为您有 OperationIDInsert 列。

在右侧,您将执行相同的操作,但使用 OperationIDUpdate 列

您将在 ControlFlow 中使用 ExecuteSQLTask 并将有一个 SQL Merge。根据 PK 字段和 OperationIDInsert/OperationIDUpdate 字段,您将插入数据或更新数据。

希望这会帮助你。如果您需要更多信息,请告诉我。


推荐阅读