none
請問mysql要怎麼轉換成 sql server 2005?? RRS feed

  • 問題

  • 請問各位大大,
    mysql 要怎麼轉換成 sql server 2005呢?

    環境:
    mysql 4.0.26-nt (mysql裡面的資料用的是utf-8編碼)
    sql server 2005 9.00.1399.00 standard edition 英文版
    windows server 2003 standard edition 中文隨機版
    .net framework 2.0.50727.42

    以下是我的轉換之路

    1. 首先我先用DTS + ,NET Framework DataProvider For ODBC+ MySQL ODBC 3.51 Driver來轉換
    在"Select Source Table and Views"步驟中卡掉, 他一直跟我說什麼型別不對之類的
    我按一下preview來看看,
    發現裡面的資料全亂碼的,
    因為編碼不對,
    mysql資料是utf-8
    sql server應該是用ucs-2來解譯的
    也好像沒有地方可以選擇編碼轉換的
    然後就放棄這個辦法了OTL

    2.我再用phpmyadmin 2.8.0.4全部匯出成.SQL檔案...用的是UTF-8編碼
    這程式很奇怪,好像碰到大於2byte的字,全部都轉不出去,,
    都匯破掉, 我指的所謂的破掉:  INSERT INTO `table1`           (`name1`)     VALUES           ('你好齟?td>
    UTF-8又是變動位元的
    放棄這個辦法了

    3.我寫一個.NET程式, 邊讀mysql, 邊寫sql server, 來做轉換的步驟
    一樣,遇到utf-8也是全亂碼
    轉了一些還會出現什麼資料是二進位的,不能寫進去

    之後我又加上轉碼 utf-8 => ucs-2
    一樣還是亂碼
    只是亂碼亂的"看起來"不一樣

    之後又放棄這個辦法了OTL

    4.之後我在用php自己寫一個mysql匯出sql server格式的.sql檔的程式, 順利匯出成.sql
    之後我再將那個.sql檔案,手動由UTF-8編碼轉換成UCS-2編碼
    不過檔案有100多M,
    用SQL Server Management Studio開啟檔案的時候,打不開,會當掉
    之後又放棄這個辦法了..
    然後就來這邊問..

    2006年5月20日 下午 04:55

解答

  • ?

    MySQL 不是到 4.1 才真正支援 utf8 編碼嗎?

    我在這邊有寫一篇 MySQL 文字編碼的心得:

    http://spaces.msn.com/tlcheng/blog/cns!145419920BFD55A7!763.entry

    你可以先依上面那篇確認你使用的編碼方式是否是 MySQL 內建支援方式編碼,還是自己編成 utf8 再寫入資料庫,如果是 MySQL 內建支援方式的話,應該依照上面那篇作法,在 Visual Studio 內伺服器總管可以看到正確文字,你就可以用你先前所採用的工具再轉看看,如果當初寫入資料庫是先編成 utf8 再寫入,你就必須要程式讀出來解開後再轉碼。

    裡面也有提及,實際上在 MyODBC for Windows 是不能用 utf8 來傳,用 utf8 來傳,會在程式內顯示正常,但是凡是透過 jdbc 來連 MySQL 的都不正常,而事實上存在 MySQL 內的並非為正常,像是 phpMyAdmin 也是透過 jdbc 連的。 

    2006年5月21日 上午 02:06

所有回覆

  • ?

    MySQL 不是到 4.1 才真正支援 utf8 編碼嗎?

    我在這邊有寫一篇 MySQL 文字編碼的心得:

    http://spaces.msn.com/tlcheng/blog/cns!145419920BFD55A7!763.entry

    你可以先依上面那篇確認你使用的編碼方式是否是 MySQL 內建支援方式編碼,還是自己編成 utf8 再寫入資料庫,如果是 MySQL 內建支援方式的話,應該依照上面那篇作法,在 Visual Studio 內伺服器總管可以看到正確文字,你就可以用你先前所採用的工具再轉看看,如果當初寫入資料庫是先編成 utf8 再寫入,你就必須要程式讀出來解開後再轉碼。

    裡面也有提及,實際上在 MyODBC for Windows 是不能用 utf8 來傳,用 utf8 來傳,會在程式內顯示正常,但是凡是透過 jdbc 來連 MySQL 的都不正常,而事實上存在 MySQL 內的並非為正常,像是 phpMyAdmin 也是透過 jdbc 連的。 

    2006年5月21日 上午 02:06
  •  璉璉 寫信:

    ?

    MySQL 不是到 4.1 才真正支援 utf8 編碼嗎?

    我在這邊有寫一篇 MySQL 文字編碼的心得:

    http://spaces.msn.com/tlcheng/blog/cns!145419920BFD55A7!763.entry

    你可以先依上面那篇確認你使用的編碼方式是否是 MySQL 內建支援方式編碼,還是自己編成 utf8 再寫入資料庫,如果是 MySQL 內建支援方式的話,應該依照上面那篇作法,在 Visual Studio 內伺服器總管可以看到正確文字,你就可以用你先前所採用的工具再轉看看,如果當初寫入資料庫是先編成 utf8 再寫入,你就必須要程式讀出來解開後再轉碼。

    裡面也有提及,實際上在 MyODBC for Windows 是不能用 utf8 來傳,用 utf8 來傳,會在程式內顯示正常,但是凡是透過 jdbc 來連 MySQL 的都不正常,而事實上存在 MySQL 內的並非為正常,像是 phpMyAdmin 也是透過 jdbc 連的。 

    感謝槤槤大大

    是自己編的..

    我的php程式模板檔是編成utf-8, 寫進去的資料也就是utf-8

     

    亂碼問題原來是MyODBC不支援UTF-8

     

    不過我後來用了個很笨的辦法解決

    解決檔案太大打不開, 就是在php如果寫進去檔案超過指定大小

    就換一個新的檔案名稱

    產生一堆001.sql , 002.sql, 003.sql....一個一個開啟來匯入

     

    不過現在又遇到一個問題了

    就是我的php網頁是用utf-8編碼

    sql server的nvarchar應該是用ucs-2

    等於得先將ucs-2轉成utf-8才能正常顯示

    我試過 $row['xxx'] = iconv('ucs-2','utf-8', $row['xxx']);

    不過轉出來的東西是亂碼的

    又不想全部改成asp.net,等於說要重寫,蠻麻煩的

    謝謝你的幫助

    2006年5月22日 上午 04:45