Discuz MYSQL数据库 大文件 GBK编码转UTF-8 图文教程

我们这里的论坛由于使用了十几年,之前的版本是Discuz! X3.2 后来无缝升级到 Discuz! X3.3,但是还是快照被劫持discuz快照被劫持的解决办法,而且Discuz! X3.3 已经不再更新了。所以我们这里打算到Discuz! X3.4,但是官方版本最新的版本是UTF-8的编码,所以我们这里先把数据库导出后转编码重新导入再升级版本。

关于如何导出Mysql数据库,请看这里:mysqldump gzip 备份及还原 压缩 图文教程

gunzip解压文件

gunzip laoji.org_2017-12-12-03-30-01.sql.gz

.sql文件转gbk编码到utf-8,并替换对于的create语句:

我们这里的文件还是挺大的,如果用Windows打开的话肯定是崩溃了,所以我们这里直接在Linux进行转码操作。

ls -lh laoji.org_2017-12-12-03-30-01.sql

-rw-r–r– 1 root root 6.4G Dec 12 03:40 laoji.org_2017-12-12-03-30-01.sql

ls -lh laoji.org.cat.tmp.sql

-rw-r–r– 1 root root 9.6G Dec 12 09:37 laoji.org.cat.tmp.sql

使用iconv转码:

sed 's/CHARSET=gbk/CHARSET=utf8/g' laoji.org_2017-12-12-03-30-01.sql | iconv -c -f gb18030 -t utf-8  > laoji.org.utf8.sql

重新生成的utf-8文件就是 laoji.org.utf8.sql 了。

注意:如果文件过大,很容易倒是shell丢失,可以不时的使用空格或者回车保持shell的连接。

不懂的请参照linux下的:grep、sed 命令,linux shell 命令行 wordpress 替换 谷歌字体 fonts.googleapis 一键命令.
以上命令是将sql语句里面的:

CHARACTER SET=gbk
变成
CHARACTER SET=utf-8

将COMMENT 后面的一些乱码去掉,有些可能少了分号的:

sed -i "s/COMMENT.*,/,/g" `grep -lr "COMMENT.*," laoji.org.utf8.sql`

导入数据库

mysql -uxjjbbs -p xjjbbs --default-character-set=utf8 < laoji.org.utf8.sql

然后从git下载最新的Discuz! X3.4即可。

WeChat