溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql字符集修改

發(fā)布時間:2020-07-04 10:00:10 來源:網(wǎng)絡(luò) 閱讀:352 作者:薛安果 欄目:數(shù)據(jù)庫

本實驗的環(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ù)

向AI問一下細(xì)節(jié)

免責(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)容。

AI