2011-08-18 66 views
0

我正在编写一个SSIS包,它具有从SQL Server源拆分记录以更新或插入MYSQL数据库的条件拆分。使用SSIS更新MYSQL中的记录

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

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

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

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

回答

0

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

对于这个问题,我猜你完全可以在没有条件分割的情况下将所有内容写入临时表,然后在SQL中使用UPDATE和INSERT。

+0

对不起,第一次使用SSIS。 – JBone

+0

当你创建一个临时表shoudl我可能使用一个表变量或CTE?另外我该如何执行更新声明?在流程或数据流窗口中完成了吗? – JBone

+0

登台表应该是数据库中的常规表格。在控制流中,CREATE/TRUNCATE表(执行任务),然后执行数据流,然后回到控制流中执行UPDATE(另一个执行任务)。看看这个博客条目:http://www.ssistalk.com/2009/10/29/ssis-why-is-my-data-flow-so-slow-with-an-ole-db-command-零件/ –

0

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

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

的职位提出了以下三个选项。

  1. 脚本组件
  2. 存放在记录
  3. 使用

笔者也已经发布了关于MySQL的另外两篇文章发布上述文章之前的自定义组件(如Merge destination component)数据。

Connecting to MySQL from SSIS

Writing to a MySQL database from SSIS

希望指向你在正确的方向。