博客首页|TW首页| 同事录|业界社区

屈伟

创业路上的程序猿

归档 - 04月 10th, 2009

转换mysql低版本数据到mysql5

最近要给discuz论坛升级, 数据库是mysql4.0,mysql4.0以前的低版本不支持编码,数据都是Latin1编码的。新版论坛计划采用mysql5.1,gbk编码。

因为mysql版本相差太大,直接复制数据库文件的方法肯定不行,只能采用mysqldump。

步骤:

1. 将mysql4.0中数据导出成sql文件

mysqldump –skip-extended-insert –default-character-set=latin1 dbname -q -uroot -ppassword > dbname.sql

加 –skip-extended-insert参数是为了将每条记录写成独立的insert into,以降低可能存在的导入时sql出错造成的损失

2. 在 dbname.sql 最前面加一句  set names gbk

如果文件较小,直接vi dbname.sql后加;如果文件太大,可以 先建一个文件names.txt,里面写set names gbk; 然后用

cat names.txt dbname.sql > dbname_gbk.sql

3. 将sql文件导入到mysql5中:

mysql -uroot -ppassword -f dbname < dbname.sql

低版本中个别乱码造成可能造成sql报错而中断,加 -f 参数意思是如果出错,继续。 因为前面已经采用一条记录一个独立sql的方式,就算出错偶尔也就丢几条记录。

测试成功,一百万记录,中间就丢了2条。能接受。

Tags: ,

星期五, 04月 10th, 2009 技术 2条评论