最近要给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条。能接受。
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
| « Nov | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||
我是来打酱油的!