下面模拟将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

  可以sed批量替换


3,确保数据库不再更新,导出所有数据

mysqldump -uroot -p123456 --quick --no-create-info --extended-insert 
--default-character-set=latin1 dbname >alldata.sql

参数说明:

--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有的行,并输出前cache到内存中

--no-create-info:不创建create table 语句

--extended-insert: 使用包括几个values列表的多行insert语法,这样文件更小,ID也小,导入数据时候非常快

--default-character-set=latin1:按照原有的字符集导出数据,这样导出的文件中,所有中文都是课件的不会保存成乱码



4,打开data.sql 将set names latin1 修改成set names gbk;

  加入配置文件中已经全部配置好字符集,这一步可以不操作。推荐执行修改配置文件


5,创建库

create database dbname default character gbk;

6,创建表,执行alltable.sql

 mysql -uroot -p dbanme <alltable.sql

7,导入数据

mysql -uroot -p dbanme <alldata.sql



总结:  latin1---->gbk


1, 导出表结构,sed 批量修改字符集为gbk

2, 导出所有数据

3, 修改mysql服务器和客户端的编码为gbk

4, 删除原有的库,表以及数据

5,导入新的建库以及建表的语句

6,导入mysql的所有数据