【问题标题】:Updating records in MYSQL with SSIS使用 SSIS 更新 MYSQL 中的记录
【发布时间】:2011-10-30 00:26:54
【问题描述】:

我正在编写一个 SSIS 包,它从 SQL Server 源中进行条件拆分,该源将记录拆分以更新或插入到 MYSQL 数据库中。

  • SQL Server 连接具有用于 OldDB\SQL Server Native Client 10.0 的提供程序 .NET 提供程序。

  • MYSQL 连接是一个 MYSQL ODBC 5.1 ADO.NET 连接。

我正在考虑使用从条件拆分分支出来的 OLE DB 命令来更新记录,但我连接使用它并连接到 MYSQL 数据库。

有人知道如何完成这项任务吗?

【问题讨论】:

    标签: mysql sql-server ssis oledbconnection


    【解决方案1】:

    我将写入临时表以进行更新,包括要更新的 PK 和列,然后使用该表和要更新的表执行 UPDATE SQL 语句。另一种方法是对每一行都使用该命令,但根据我的经验,这似乎并没有那么好 - 至少与一个不错的批量插入和单个更新命令相比。

    就此而言,我想您可以完全不使用条件拆分,将所有内容写入临时表,然后在 SQL 中背靠背使用 UPDATE 和 INSERT。

    【讨论】:

    • 当您创建临时表时,我应该使用表变量或 CTE?另外我如何执行更新语句?是在流程窗口还是数据流窗口完成?
    • 暂存表应该是数据库中的常规表。在控制流中,创建/截断该表(执行任务),然后执行数据流,然后返回控制流执行更新(另一个执行任务)。看看这个博客条目:ssistalk.com/2009/10/29/…
    【解决方案2】:

    可能,以下 MSDN 博客链接可能会对您有所帮助。这个我没试过。

    How do I UPDATE and DELETE if I don’t have an OLEDB provider?

    帖子建议了以下三个选项。

    1. 脚本组件
    2. 将数据存储在 Recordset 中
    3. 使用自定义组件(如Merge destination component

    在发布上述文章之前,作者还发布了另外两篇关于 MySQL 的文章。

    Connecting to MySQL from SSIS

    Writing to a MySQL database from SSIS

    希望这会为您指明正确的方向。

    【讨论】:

      猜你喜欢
      • 2019-06-11
      • 2018-06-02
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      相关资源
      最近更新 更多