MSSQL to MySQL Exporter

最近因為工作的需求關係,需要將MSSQL的資料庫轉到MySQL的資料庫,自己寫程式覺得很累,想說有沒現成的軟體可以做轉換,有找到MSSQL-to-MySQL不過要價$49美金,其實也不算貴,但自己已經會寫程式了,還得另外花錢,就不划算了。

芝麻電腦診所有一篇MS SQL移轉MySQL,是透過MySQL Migration Toolkit來轉的,不過ㄚ琪沒找到。

最後在SourceForge找到了MSSQL to MySQL Exporter,它是用C#的.NET平台寫得,可以資料表,然後選擇你要匯出的資料表,它會輸出新增資料表及資料列的SQL語法,屆時再把這些SQL語法匯入到MySQL中就可以了,雖然沒有直接轉換,但是這樣子已經可以符合需求了,對於幾百MB的資料量轉換已經夠了。

不過ㄚ琪實際在使用時發現了一個問題,就是不知哪位天兵,竟然將一個資料表的名稱設為Function,眼尖的人都會曉得這很可能是關鍵字,所以這個系統會丟出錯誤。

ㄚ琪算是比較龜吧,就開啟原始碼來改了,這個原始碼是Visual Studio舊版編譯的,所以用ㄚ琪的Microsoft Visual C# 2010 Express開啟需要做轉換,一度還發生ㄚ琪安裝的Microsoft Visual C# 2010 Express有問題需要重新安裝。

警告 1 ‘System.Data.SqlClient.SqlParameterCollection.Add(string, object)’ 已過時: ‘Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).  http://go.microsoft.com/fwlink/?linkid=14202′這樣子的警告,將Add方法改為AddWithValue就可以正確。

另外因為Function是關鍵字,所以ㄚ琪需要將cm = new SqlCommand(“select * from “+tablename, objConn);

改成cm = new SqlCommand(“select * from ””+tablename+”””, objConn);

這樣程式才能正確執行。

好了,這個程式現在不用錢ㄚ琪奉送給各位免費使用。下載=>MSSQLtoMySQL

延伸閱讀-更多高CP值的C#教學文章在這邊:

C# string Substring 定義及七種用法
想用C#寫出可以把浮水印崁入相片
何謂資料隱碼(SQL injection)攻擊?程式設計師應如何預防?
C# List 定義及七種常用方法
資料庫正規化
MySQL 流程控制的迴圈

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

9 則留言

  1. 謝謝您的分享
    有下載MSSQLtoMySQL使用
    只能讀取MSSQL點選Export Data按鈕
    無法轉到MySQL 出現另存新檔的視窗
    能幫忙嗎?? 謝謝!!

    1. Author

      嗯,你的意思是說另存新檔的檔案是錯的嗎?
      這個問題其實ㄚ琪有發現到,所以ㄚ琪最近在修改它的程式,這樣才可以轉到MySQL,
      如果有新的進展ㄚ琪會再公佈,謝謝。

  2. 工具很好用,但匯出日期時間欄位時,沒有匯出”時分秒”

  3. 謝謝 不過nvarchar(max)轉出來變成ntext但mysql好像不吃ntext
    還有 datetime2(7)轉出來變成datetime2(27) mysql好像沒有datetime2
    是我的MYSQL版本問題嗎?
    不過我手動修正後後成功匯入 謝謝你


  4. ㄚ琪您好,請問這個程式是不是有罪大筆數的限制,因為我有幾個資料表比數超過一萬,每次轉都會當掉….

    1. Author

      沒有確認最大筆數限制,但是會不會跟記憶體數量有關係也不得而知,重點是這隻程式的原始碼在哪?也忘了,可能在兩顆壞掉的硬碟中也不一定。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *