分享

mysql4到mysql5 数据库 转换编码操作一例

 binke 2010-01-05

原数据库4.0
页面编码gb2312
数据库默认编码latin1

新数据库5.1
页面编码utf-8
数据库编码utf8

导出旧数据库结构(mysql4)
#./bin/mysqldump -uroot -d olddb > /tmp/olddb_create_table.sql
导出数据,不含结构
#./bin/mysqldump -uroot -t --default-character-set=gb2312 olddb > /tmp/olddb_data.sql

建立新数据库(mysql5)
#./bin/mysql -uroot
#>create database newdb default character set utf8;
#>use newdb;
导入数据库表结构
#>source /sqldata/olddb_create_tabe.sql;
导入数据库数据
#>set names gb2312;
#>source /sqldata/olddb_data.sql;

大功告成。

需要一致的编码我均用颜色高亮。
注:
mysql4中,不管数据库如何编码,php页面写入的是gb2312的资料,那么导出的时候使用gb2312编码导出即可还原正确gb2312编码脚本。

mysql5中,不管数据库编码如何,你导入的sql脚本是gb2312的,那么尽管使用gb2312的链接校队向数据库写东西。

说一下为什么要分开导出和导入

当你需要导出gb2312的脚本,你势必要加上--default-character-set参数,这样一来,导出的脚本后面会有讨厌的 create table() charset=gb2312;出现,向新数据库导入的时候这些东西是必须去掉的,而当数据库庞大至100M以上,去掉这些东西并不是很容易。因此分开导 出。保证结构干净,数据正确。

mysql5 之间 不同编码转化看这里

我都是以自己的操作作为记录

mysql5 latin1 存储的gb2312数据
目标 mysql5 gbk

#my=/usr/local/amp/mysql5/bin

#$my/mysqldump -uroot -p -d --default-character-set=latin1 dbname > ~/db_table.sql

#$my/mysqldump -uroot -p -t --default-character-set=latin1 dbname > ~/db_data.sql

这样导出来的sql会是gb2312的,打开看,就是汉字,没乱码
但是别忘了vi ~/db_table.sql
并且替换 :%s/ DEFAULT CHARSET=Latin1//g

#$my/mysql -uroot -p

>create newdb default character set gbk;

>use newdb;

>set names gbk;

>source ~/db_table.sql

>source ~/db_data.sql


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多