2011-08-18 187 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

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