Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74203
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 302
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-03 09:20
文章分类

全部博文(29)

文章存档

2015年(29)

我的朋友

分类: 系统运维

2015-07-17 10:02:02

如果应用开始阶段没有设置正确的字符集,运行一段时间才发现存在不能满足要求,需要进行调整,又不想丢掉这段时间的数据,那么就需要进行字符集的修改。
字符集的修改不能通过alter  database  character  set  ***;或者alter  table  tablename  character  set  ***;命令进行。这两个命令都不能更新已有记录的字符集,而只是对新创建的表和记录生效。已有记录的字符集调整,需要先将数据导出,然后经过适当调整重新导入后才可完成。
一下模拟的是将latin1字符集的数据库修改成gbk字符集的数据库的过程:
1.导出表结构:
        mysqldump  -u  root  -p  --default-character-set=gbk  -d  databasename>createtab.sql
   其中,--default-character-set=gbk表示以什么字符集连接,-d表示只导出表结构,不导出数据。
2.手工修改createtab.sql中表结构定义的字符集为新的字符集。
3.确保记录不再更新,导出所有记录:
        mysqldump  -u  root  -p  --quick  --no-create-info  --extended-insert  --default-character-set=latin1  databasename>data.sql
        --extended-insert :使用包括几个values列表的多行insert语法,这样使转储文件更小,重载文件时可快速插入。
        --no-create-info :不重新创建每个转储表的create table 语句。
        --default-character-set=latin1 :按照原有字符集编码导出所有数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码。
4.打开data.sql,将set names latin1;修改成set  names  gbk;
5.使用新的字符集创建新的数据库:
        create  database  dbname  character  set  gbk;
6.创建表,执行createtab.sql
        mysql  -u root  -p  databasename<createtab.sql
7.导入数据,执行data.sql
        mysql  -u root  -p  databasename<data.sql
阅读(1027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~