對於已有的數據庫,修改字符集不能直接通過 alter database character set * 或 alter table tablename character set * ,這兩個命令都沒有更新已有記錄的字符集,而只是對新創建的表或記錄生效
已經有記錄的字符集的調整,必須先將數據導出,經過修改字符集後重新導入後纔可完成
下面模擬將latin1字符集修改爲GBK的過程
1.導出表結構
mysqldump -uroot -p --default-character-set=latin1 -d dbname > alltable.sql --default-character-set=gbk
說明:表示以GBK字符集進行連接
-d 只導表結構
2.編輯alltable.sql 將latin1改成GBK
3.確保數據庫不再更新,導出所有數據
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 dbname > alldata.sql
4.打開alldata.sql 將set names latin1 改爲 set names gbk
5.建庫
create database dbname default charset gbk
6.創建表 執行alltable.sql
mysql -uroot -p dbname < alltable.sql
7.導入數據
mysql -uroot -p dbname < alldata.sql
總結:(latin1-》utf8)
1.建庫及建表語句導出,sed批量修改爲utf8
2.導出所有mysql數據
3.修改mysql服務端和客戶端編碼爲utf8
4.刪除原有的庫表及數據
5.導入新的建庫及建表語句
6.導入mysql的所有數據