IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁數(shù)據(jù)庫MYSQL → MYSQL編碼轉(zhuǎn)換問題大全

MYSQL編碼轉(zhuǎn)換問題大全

時(shí)間:2015/6/28來源: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、導(dǎo)入數(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

總結(jié):這種方法有個(gè)致命之處就是當(dāng)數(shù)據(jù)中有大量中文字符和其他特殊符號字符時(shí),很有可能導(dǎo)致在[步驟五]時(shí)報(bào)錯導(dǎo)致無法正常導(dǎo)入數(shù)據(jù),如果數(shù)據(jù)庫比較大可以分別對每張表執(zhí)行上述步驟


三:

為了解決第一種方法中總結(jié)時(shí)說到的問題,在網(wǎng)上苦苦查找了一天資料才東拼西湊的搞出一個(gè)比較穩(wěn)妥的解決方法

步驟一 將待導(dǎo)出的數(shù)據(jù)表的表結(jié)構(gòu)導(dǎo)出(可以用phpmyadmin、mysqldump等,很簡單就不說了),然后將導(dǎo)出的create table語句的CHARSET=latin1改為CHARSET=utf8,在目標(biāo)庫newdbname中執(zhí)行該create table語句把表結(jié)構(gòu)建好,接下來開始導(dǎo)出-導(dǎo)入數(shù)據(jù)

步驟二 命令行:進(jìn)入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;  注:設(shè)置mysql的環(huán)境變量,這樣mysql在下一步讀取sql文件時(shí)將以utf8的形式去解釋該文件內(nèi)容

步驟六 在mysql命令行下執(zhí)行語句 load data infile 'tbname.sql' into table newdbname.tbname;

注意:千萬不要忘了第四步

采用第二種方法,所有數(shù)據(jù)均正常導(dǎo)入,且格式轉(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亂碼的文件,因此,本機(jī)也架起Mysql5.0的環(huán)境
2. 然后新建一個(gè)空數(shù)據(jù)庫,編碼為UTF8,用下回來的sql文件導(dǎo)入
3. 再用phpMyAdmin導(dǎo)出來,這樣編碼就成了UTF8
4. 把導(dǎo)出的sql文件中所有的DEFAULT CHARSET=latin1替換成DEFAULT CHARSET=utf8
5. 刪除原來的latin1編碼的數(shù)據(jù)庫,導(dǎo)入這個(gè)UTF8編碼的sql文件
完成:)

補(bǔ)充一下重點(diǎn):
在執(zhí)行完第2步的時(shí)候,用PHPMYADMIN打開數(shù)據(jù)庫看看
里面所有的表和字段都還是LATIN1,沒關(guān)系,繼續(xù)執(zhí)行第3步
執(zhí)行完第3步,可以用文本編輯器打開SQL文件看看,換UTF8格式查看
這時(shí),表和字段的內(nèi)容就是UTF8了!

以上五種方法我都試驗(yàn)了一遍,可能是數(shù)據(jù)庫實(shí)在太大,有的方法完全不行,有的可以但只能轉(zhuǎn)換到一半也出錯停止,無法轉(zhuǎn)換完全部,最后在不懈努力之下找到個(gè)編碼轉(zhuǎn)換的PHP小腳本文件,使用后全部庫轉(zhuǎn)換正常,看來還是工具來的方便啊,手工忙了半天都沒解決。。。不過還有點(diǎn)就是不管遇到什么問題,搜索引擎一般情況下都能幫助你解決問題,只要你愿意去花時(shí)間自己解決問題。

關(guān)鍵詞標(biāo)簽:MYSQL,編碼轉(zhuǎn)換

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL常用維護(hù)管理工具MySQL常用維護(hù)管理工具Linux VPS/服務(wù)器上輕松導(dǎo)入、導(dǎo)出MySQL數(shù)據(jù)Linux VPS/服務(wù)器上輕松導(dǎo)入、導(dǎo)出MySQL數(shù)據(jù)MySQL復(fù)制的概述、安裝、故障、技巧、工具MySQL復(fù)制的概述、安裝、故障、技巧、工具

相關(guān)下載

人氣排行 MySQL數(shù)據(jù)庫啟動失敗1067進(jìn)程意外終止的解決辦法總結(jié)Mysql 1045錯誤解決辦法10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法MySQL導(dǎo)出導(dǎo)入命令的用例MySQL無法啟動、無法停止各種解決方法總結(jié)三種常用的MySQL建表語句Mysql清空表的實(shí)現(xiàn)方法