您好,登錄后才能下訂單哦!
本實驗的環(huán)境:
linux系統(tǒng):
cat /etc/redhat-release
CentOS release 6.5 (Final)
數(shù)據(jù)庫環(huán)境(源碼編譯,多實例):
select version();
+------------+
| version() |
+------------+
| 5.5.32-log |
+------------+
模擬的是將latin1字符集數(shù)據(jù)庫修改UTF-8字符集的數(shù)據(jù)庫的過程
創(chuàng)建latin1字符集的數(shù)據(jù)庫:
mysql> create database anguo default character set = latin1 default collate = latin1_swedish_ci;
Query OK, 1 row affected (0.00 sec)
創(chuàng)建latin1字符集的表:
create table student(id int(4) not null auto_increment,name varchar(20),primary key(id)) default character set = latin1 default collate = latin1_swedish_ci;
set names latin1;
insert into student(name) values('zhang'),('he'),('hou'),('liu'),('安果'),('張三');
修改步驟:
1)導(dǎo)出表結(jié)構(gòu)
mysqldump -uroot -pmysql -S /data/3306/mysql.sock --default-character=utf8 -d anguo>/data/backup/createanguo.sql
其中 –default-character=utf8表示設(shè)置以什么字符集連接,-d表示只導(dǎo)出表結(jié)構(gòu)不導(dǎo)出數(shù)據(jù)
2)手工修改createoldboy.sql中表結(jié)構(gòu)定義的字符集為新的字符集
sed -i 's/latin1/utf8/g' /data/backup/createanguo.sql
注意:批量替換的時候確保相關(guān)字段里面沒有l(wèi)atin1相關(guān)的字符。
3)確保記錄不再更新,導(dǎo)出所有記錄
mysqldump -uroot -pmysql -S /data/3306/mysql.sock --quick --no-create-info --extended-insert --default-character-set=latin1 anguo >/data/backup/dataanguo.sql
--quick:該選項用于轉(zhuǎn)儲大的表,它前置mysqldump從服務(wù)器一次一行地檢索表中的行而不是檢索所有行,并在輸出前將它緩存到內(nèi)存中
--extended-insert: 使用包括幾個values列表的多行insert語法,這樣使轉(zhuǎn)儲文件更小,重載文件時可以快速插入
--no-create-info:不到出每個轉(zhuǎn)儲表的create table語句
--default-character-set=latin1: 按照原有的字符集導(dǎo)出所有數(shù)據(jù),這樣導(dǎo)出的文件中,所有中文都是可見的,不會保存成亂碼
4)打開dataanguo.sql,將set names latin1修改成set names utf8
sed -i 's/latin1/utf8/g' /data/backup/dataanguo.sql
注意:批量替換的時候確保相關(guān)字段里面沒有l(wèi)atin1相關(guān)的字符。
5)使用新的字符集創(chuàng)建數(shù)據(jù)庫
create database anguo default character set = utf8 default collate = utf8_general_ci;
6)創(chuàng)建表,執(zhí)行createoldboy.sql
mysql -uroot -pmysql -S /data/3306/mysql.sock anguo < /data/backup/createanguo.sql
7)導(dǎo)入數(shù)據(jù),執(zhí)行初始化
mysql -uroot -pmysql -S /data/3306/mysql.sock anguo < /data/backup/dataanguo.sql
注:部分內(nèi)容參考深入淺出MySQL數(shù)據(jù)庫開發(fā)、優(yōu)化與管理維護(hù)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。