相信這個問題拜託google大師後會有很多種解法
可是符合需求又簡單的卻沒幾種
而且可分自行寫程式的或是利用軟體轉換
但偏偏寫程式的方式我怎麼使用都沒辦法正常連線到SQL Server
後來找到了一個方法,不用寫程式就能轉換,而且可以自訂排程
首先要先下載 MySQL Connector/ODBC
在SQL Server端安裝,這裡的設定以Windows Server 2003為主
安裝完後就開始設定如何連結MySQL,開始→程式及→系統管理工具→資料來源 (ODBC)
切換到系統資料來源名稱,按新增
找到MySQL ODBC 3.51 Driver後點選並按完成
根據下面圖的指示填入,並選擇所要匯入的資料庫後按OK,若有出現錯誤點選Diagnostics看錯誤訊息
再來開始就是要匯資料了,開始→程式集→Microsoft SQL Server→Enterprise Manager,找到你要匯出的資料庫與資料表
在要匯出的資料表按右鍵選 所有工作→匯出資料
點選下一步,資料來源選擇Microsoft OLE DB Provider for SQL Server
伺服器選local,並使用Windows的帳戶驗證,資料庫選擇想匯出的資料庫
點選下一步,目的地選擇MySQL ODBC 3.51 Driver,使用者/系統 DSN下拉會有當初設定的名稱
點選下一步,複製來源資料庫的資料表與檢視表
點選下一步,選擇SQL Server中哪些資料表要轉到MySQL並按下一步執行,就可以成功匯進去了
後記
由於匯出來的資料中文是BIG5編碼,因此若MySQL資料表規劃是以UTF-8為編碼格式
可以寫一程式讓他全部轉換成UTF-8,可利用iconv函數去轉換中文的部份
好樣的!
剛好工作上也用的到!
感謝分享!
to Leeson:
彼此分享才能減少解決問題的時間
也是我發表文章的動力與價值
不過這個方式,在中文亂碼的部份讓我吃足了苦頭
因為從SQL Server匯過來的是BIG5編碼
後來索性就寫一支程式把資料全取出來然後轉碼在回存
不知道有遇到這種情況的人是如何解決這問題?
目前我的作法是:
1.利用排程執行sql server 的command mode 指令(那一個指令我忘了),直接執行 *.sql 抓出資料存成文字檔。
2.再利用排程執行 ConvertZ command mode 執行轉碼成UTF8文字檔!
3.再利用排程執行PHP程式,彙入Mysql。
一共用了三個排程!@@
還要小心計算資料量及執行時間!才不至於資料抓取錯誤!
你的做法簡捷多了!
我想請教你第一個做法利用排程執行sql server 的command mode 指令,直接執行 *.sql 抓出資料存成文字檔。
抓出來的文字檔是sql的語法文字檔還是資料的text檔??
資料的text檔.
isqlw
這一個指令。
了解!!原來SQL Server也有command mode