MySQL實(shí)驗(yàn)之不同字符集數(shù)據(jù)庫(kù)遷移步驟演示
今天主要介紹下mysqldump怎么遷移編碼不同的數(shù)據(jù)庫(kù),這里用一個(gè)實(shí)驗(yàn)來(lái)演示一下。
1. 創(chuàng)建測(cè)試數(shù)據(jù)庫(kù)
- create database t1 default character set gbk collate gbk_chinese_ci;
- create database t2 default character set utf8 collate utf8_general_ci;
- use t1;
- create table t11(id int,name varchar(10),primary key(id)) engine=innodb default charset=utf8;
- create table t12(id int,name varchar(10),primary key(id)) engine=innodb default charset=gb2312;
- use t2;
- create table t21(id int,name varchar(10),primary key(id)) engine=innodb default charset=utf8;
- create table t22(id int,name varchar(10),primary key(id)) engine=innodb default charset=gb2312;
2. 模擬數(shù)據(jù)
- use t1;
- insert into t11 values(1,'hwb');
- insert into t11 values(2,'hwb2');
- insert into t12 values(1,'hwb');
- insert into t12 values(2,'hwb2');
-
- use t2;
- insert into t21 values(1,'hwb');
- insert into t21 values(2,'hwb2');
- insert into t22 values(1,'hwb');
- insert into t22 values(2,'hwb2');
3. 導(dǎo)出數(shù)據(jù)庫(kù)
- mysqldump -u root -p t1 > /tmp/t1_old.sql
- mysqldump -u root -p t2 > /tmp/t2_old.sql
4. 轉(zhuǎn)換編碼
如果你是想轉(zhuǎn)成utf-8,就在t參數(shù)后面寫(xiě)上。以前字符集是gb2312就在-f參數(shù)后面寫(xiě)上。
- iconv -t utf-8 -f gb2312 -c /tmp/t1_old.sql > /tmp/t1_new_utf8.sql
- iconv -t utf-8 -f gb2312 -c /tmp/t2_old.sql > /tmp/t2_new_utf8.sql
5. 修改 /tmp/new_utf8.sql文件的字符編碼
- sed 's/CHARSET=gbk/CHARSET=utf8/g' /tmp/t1_new_utf8.sql > /tmp/t1_new_utf8_new.sql
- sed 's/CHARSET=gb2312/CHARSET=utf8/g' /tmp/t1_new_utf8_new.sql > /tmp/t1_new_utf8_new2.sql
-
- sed 's/CHARSET=gbk/CHARSET=utf8/g' /tmp/t2_new_utf8.sql > /tmp/t2_new_utf8_new.sql
- sed 's/CHARSET=gb2312/CHARSET=utf8/g' /tmp/t2_new_utf8_new.sql > /tmp/t2_new_utf8_new2.sql
6. 建新庫(kù)
- create database t3 default character set utf8 collate utf8_general_ci;
- create database t4 default character set utf8 collate utf8_general_ci;
7. 導(dǎo)入
- use t3;
- source /tmp/t1_new_utf8_new2.sql;
- use t4;
- source /tmp/t2_new_utf8_new2.sql;
8. 測(cè)試
到這里就完成了數(shù)據(jù)庫(kù)及表不同字符集的遷移測(cè)試。