【问题标题】:how to upsert data from mysql to ssms using ssis如何使用 ssis 将数据从 mysql 插入到 ssms
【发布时间】:2019-08-16 10:46:42
【问题描述】:

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

【问题讨论】:

标签: mysql sql-server ssis ssms upsert


【解决方案1】:

执行此操作的常用方法是将新数据插入空临时表,然后运行 ​​SQL Merge 命令(使用单独的 SQL 查询任务)。

MERGE 命令非常强大,可以进行更新、插入甚至删除。在此处查看合并的完整描述: https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql?view=sql-server-2017

【讨论】:

    【解决方案2】:

    此设计如下所示:

    您将有 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 合并。根据 PK 字段和 OperationIDInsert/OperationIDUpdate 字段,您将插入或更新数据。

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

    【讨论】:

      猜你喜欢
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多