天天看点

MySQLl-更改生产线上MySQL数据字符集的方案

下面模拟将Latin1字符集的数据库修改为GBK字符集的实际过程

1,导出表结构

<code>mysqldump -uroot -p </code><code>--default-character-set=latin1 -d dbname &gt;alltable.sql;</code>

<code>--default-character-set=gbk  表示以GBK字符集进行连接</code>

<code>-d 只导出表结构</code>

2,编辑alltable.sql 将Latin1改成GBK

  可以sed批量替换

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

<code>mysqldump -uroot -p123456 </code><code>--quick --no-create-info --extended-insert </code>

<code>--default-character-set=latin1 dbname &gt;alldata.sql</code>

参数说明:

--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,创建库

<code>create</code> <code>database</code> <code>dbname </code><code>default</code> <code>character</code> <code>gbk;</code>

6,创建表,执行alltable.sql

<code> </code><code>mysql -uroot -p dbanme &lt;alltable.sql</code>

7,导入数据

<code>mysql -uroot -p dbanme &lt;alldata.sql</code>

总结:  latin1----&gt;gbk

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

2, 导出所有数据

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

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

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

6,导入mysql的所有数据

      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1787941,如需转载请自行联系原作者