1.导出test用户的表结构
[root@testdb ~]# mysqldump -uroot -p --default-character-set=gbk -d test > createtab.sql
-d 表示只导出表结构,不包含数据
2.手工修改createtab.sql中表结构定义中的字符集为新的GBK字符集
3.确保记录不再更新,导出所有记录
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 test > data.sql
--quick 转储大表,一次一行地检索表中的行而不是检索所有行,并在输出前缓存在内存中
--no-create-info 不写重新创建每个转储表的create table语句
--extended-insert 使用包括几个values列表的多行insert语法,使转储文件更小,加速插入
--default-character-set=latin1 按照原有的字符集导出所有数据,保证中文可见,不会保存成乱码
4.打开data.sql,将SET NAMES latin1修改成SET NAMES gbk;
5.使用新的字符集GBK创建新的数据库
mysql> create database test_gbk default charset gbk;
6.创建表,执行createtab.sql
[root@testdb ~]# mysql -uroot -p test_gbk < createtab.sql
7.导入数据,执行data.sql
[root@testdb ~]# mysql -uroot -p test_gbk < data.sql
8.OK,搞定!
--转自