1. 程式人生 > 其它 >SSIS向MySQL目標(Destination)寫資料--Step By Step

SSIS向MySQL目標(Destination)寫資料--Step By Step

前言(廢話)

最近的工作中涉及到SQLSERVER向MySQL的資料遷移同步,團隊中理所當然準備用開發C#微服務介面的方式實現,我覺得這個路子曲折了,推薦SSIS的方式並自告奮勇接下了這個活.不過以前都是sqlserver間互相傳資料,還沒往MySQL寫過資料,沒想到處理的過程遇到很多問題,網路上搜索SSIS往MySQL導資料要麼說不確定是否可行,要麼就說不可行,搞得我都一度懷疑是不是往MySQL寫資料本就不可行.為了交付工作,只好放棄了SSIS方案,用SqlServer的"生成指令碼"連帶整個表的資料批量匯出指令碼,然後放到MySQL中修改為MySQL的語法再批量執行,算是曲線完成了工作.過了幾天因為要做成自動同步,於是又搬出來研究了一番.所幸一堆的踩坑和填坑後,總算解決了.

主要分以下幾步實現:

1. 建立ODBC 連線

  • 從MySQL官方網站下載安裝ODBC連線驅動Connector/ODBC 8.0
    注意是選擇32位版本

  • 建立DSN ODBC資料來源
    訪問到控制面板,檢視方式選擇小圖示

    依次選擇 管理工具/ODBC Data Source(32-bit)/系統DSN/新增



  • 建立ODBC連線
    ①在連線管理器中右鍵點選"新建連線";
    ②選擇ODBC;
    ③在新建介面選擇"使用使用者名稱或系統資料來源名稱",下拉項中選擇前面維護的DSN,輸入使用者名稱,密碼;
    ④設定屬性RetainSameConnection=True.



2. 建立ODBC Destination

資料來源元件選擇普通的"OLE DB源"元件即可.目標元件選擇比較多,"OLE DB Destination","ADO NET Destination","ODBC Destination",搜了些資料貌似"ADO NET Destination"是可以的,但我一番踩坑沒試出來,我的驗證只有"ODBC Destination"是可行的.

3. 建立執行SQL任務

執行時會提示語法錯誤,需要設定一下Mysql的sql_model,建立"執行SQL任務"元件,執行以下語句即可:
SET sql_mode ='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES'
注意連線和"ODBC目標"的連線保持一致.

參考:

使用SSIS更新MYSQL中的記錄
Writing to a MySQL database from SSIS
Connecting to MySQL from SSIS
Creating a Destination with the Script Component