一般情况下我们在设计数据库的时候都会事先确定好要用的字符集,但当我们要使用以前的数据的时候,可能会遇到字符集不同的问题,字符集的修改不能通过alert database charest set *来直接修改,这样只是影响以后的数据,对已有的数据没有用,那怎么办那
我们模拟讲latin1字符集的数据库修改成GBK的字符集,
1,导出表结构:
mysqldump -uroot -p --default -character-set = gbk -d databasename>createtab.sql
-default-character-set=gbk 表示设置上面字符集连接 -d表示只导出表结构
2,手工修改createtab.sql中表结构定义中的字符集为新的字符集。
3,确保记录不在更新,导出所有记录
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-chareacter-set=latina
databasename>date.sql
--quick 该选项用于转存储大的表,--extended-insert 可以使转存文件更小,重载的时候加快速度,
--no-create-info不写重新创建每个转存储表的create table 语句,--default-character-set=latin1按照原有的字符集导出所有数据,这样导出的文件中,所有的中文都是可见的,保证不会出项乱码,
4,打开data.sql 将set names lation1修改为set names gbk;
5,使用新的字符集创建数据库,
create database databasename default charset gbk;
6,创建表,执行createtab.sql
mysql -uroot -p databasename < createtab.sql
7,导入数据,执行data.sql,
mysql -uroot -p databasename < data.sql