時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
一:
1、備份數(shù)據(jù)庫
mysqldump --default-character-set=latin1 --create-options=false --set-charset=false -u root -p 數(shù)據(jù)庫名稱 > E:\back.sql
2、創(chuàng)建新數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名稱 CHARACTER SET utf8 COLLATE utf8_general_ci;
3、導入數(shù)據(jù)
mysql -u root -p --default-character-set=gbk 數(shù)據(jù)庫名稱 < E:\back.sql
二:
步驟一 命令行執(zhí)行:mysqldump --opt -hlocalhost -uroot -p*** --default-character-set=lantin1 dbname > /usr/local/dbname.sql
步驟二 將 dbname.sql文件中的create table語句的CHARSET=latin1改為CHARSET=utf8
步驟三 在dbname.sql文件中的insert語句之前加一條'set names utf8;'
步驟四 將dbname.sql轉(zhuǎn)碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的'轉(zhuǎn)換->ASCII到UTF-8(Unicode編輯)',或者將文件另存為UTF-8(無BOM)格式
步驟五 命令行執(zhí)行:mysql -hlocalhost -uroot -p*** --default-character-set=utf8 new_dbname < /usr/local/dbname.sql
總結:這種方法有個致命之處就是當數(shù)據(jù)中有大量中文字符和其他特殊符號字符時,很有可能導致在[步驟五]時報錯導致無法正常導入數(shù)據(jù),如果數(shù)據(jù)庫比較大可以分別對每張表執(zhí)行上述步驟
三:
為了解決第一種方法中總結時說到的問題,在網(wǎng)上苦苦查找了一天資料才東拼西湊的搞出一個比較穩(wěn)妥的解決方法
步驟一 將待導出的數(shù)據(jù)表的表結構導出(可以用Phpmyadmin、mysqldump等,很簡單就不說了),然后將導出的create table語句的CHARSET=latin1改為CHARSET=utf8,在目標庫newdbname中執(zhí)行該create table語句把表結構建好,接下來開始導出-導入數(shù)據(jù)
步驟二 命令行:進入mysql命令行下,mysql -hlocalhost -uroot -p*** dbname
步驟三 執(zhí)行SQL select * from tbname into outfile '/usr/local/tbname.sql';
步驟四 將tbname.sql轉(zhuǎn)碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的'轉(zhuǎn)換->ASCII到UTF-8(Unicode編輯)',或者將文件另存為UTF-8(無BOM)格式
步驟五 在mysql命令行下執(zhí)行語句 set character_set_database=utf8;??注:設置mysql的環(huán)境變量,這樣mysql在下一步讀取sql文件時將以utf8的形式去解釋該文件內(nèi)容
步驟六 在mysql命令行下執(zhí)行語句 load data infile 'tbname.sql' into table newdbname.tbname;
注意:千萬不要忘了第四步
采用第二種方法,所有數(shù)據(jù)均正常導入,且格式轉(zhuǎn)換成功沒有亂碼
四:
mysql數(shù)據(jù)轉(zhuǎn)換編碼
[root@piglet home]# mysqldump -u root -p --default-character-set=latin1 --set-charset=utf8 --skip-opt aiyomama_cn > /home/sites/savemoney.sql
Enter password:
五:
下回來的是latin1亂碼的文件,因此,本機也架起Mysql5.0的環(huán)境
2. 然后新建一個空數(shù)據(jù)庫,編碼為UTF8,用下回來的sql文件導入
3. 再用phpmyadmin導出來,這樣編碼就成了UTF8
4. 把導出的sql文件中所有的DEFAULT CHARSET=latin1替換成DEFAULT CHARSET=utf8
5. 刪除原來的latin1編碼的數(shù)據(jù)庫,導入這個UTF8編碼的sql文件
完成:)
補充一下重點:
在執(zhí)行完第2步的時候,用PHPMYADMIN打開數(shù)據(jù)庫看看
里面所有的表和字段都還是LATIN1,沒關系,繼續(xù)執(zhí)行第3步
執(zhí)行完第3步,可以用文本編輯器打開SQL文件看看,換UTF8格式查看
這時,表和字段的內(nèi)容就是UTF8了!
以上五種方法我都試驗了一遍,可能是數(shù)據(jù)庫實在太大,有的方法完全不行,有的可以但只能轉(zhuǎn)換到一半也出錯停止,無法轉(zhuǎn)換完全部,最后在不懈努力之下找到個編碼轉(zhuǎn)換的PHP小腳本文件,使用后全部庫轉(zhuǎn)換正常,看來還是工具來的方便啊,手工忙了半天都沒解決。。。不過還有點就是不管遇到什么問題,搜索引擎一般情況下都能幫助你解決問題,只要你愿意去花時間自己解決問題。
關鍵詞標簽:MYSQL,編碼轉(zhuǎn)換
相關閱讀
熱門文章
Xbox Game Pass
10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦
MySQL常用維護管理工具
MySQL數(shù)據(jù)庫啟動失敗1067進程意外終止的解決辦法總結
人氣排行 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 MySQL數(shù)據(jù)庫啟動失敗1067進程意外終止的解決辦法總結 Mysql 1045錯誤解決辦法 MySQL服務器進程CPU占用100%解決辦法 MySQL導出導入命令的用例 MySQL連接字符串的實際操作步驟匯總 MySQL無法啟動、無法停止各種解決方法總結 三種常用的MySQL建表語句