本文摘抄至《深入浅出MYSQL:数据库开发、优化、与管理维护》
以下模拟的是将latin1字符集的数据库修改成GBK字符集的数据库的过程。
迁移全过程
- 导出表结构
mysqldump -uroot -p --default-character-set=gbk -d databasename> createtab.sql
- 手工修改createtab.sql中表结构定义中的字符集为新的字符集
- 确保记录不再更新,导出所有记录
mysqldump -uroot -p --quick --no-create-info --extended-insert --default- character-set=latin1 databasename> data.sql
# --quick. 该选项用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行,并在输出前将它缓存到内存中。
# --extended-insert:使用包括几个VALUES列表的多行INSERT语法。这样使转储文件更小,重载文件时可以加速插入。
# --no-create-info:不导出每个转储表的CREATE TABLE语句。
#--default-character-set=latin1:按照原有的字符集导出所有数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码。
- –no-create-info:不导出每个转储表的CREATE TABLE语句。–default-character-set=latin1:按照原有的字符集导出所有数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码。
- 使用新的字符集创建新的数据库
create database databasename default charset gbk;
- 创建表,执行createtab.sql。
mysql -uroot -p databasename < createtab.sql
- mysql -uroot -p databasename < data.sql
mysql -uroot -p databasename < data.sql