从Emlog到Typecho的博客主体数据迁移
前言
一个月以前,正想写一篇博文。却发现在 EMLOG 后台无论如何也不能完成发布操作。经过一系列检查发现,不知从什么时候开始,EMLOG 已经不兼容 PHP7 了。时光荏苒,岁月如梭。EMLOG 已经三四年没有更新了,早已跟不上这个时代。虽然有些舍不得,经过多番思考无奈,只好给博客搬家了。在选择程序时候,着重考虑轻盈易管理和后期持续支持两个方面,于是决定转战 Typecho。
但是原有的 EMLOG 的所有内容也不能舍弃啊,毕竟是自己的一番心血。在 Typecho 官方 Doc 有教程,是一个 Python 脚本,似乎不兼容 Typecho1.1,不过简单看了一下,似乎问题也不大,大不了出了问题再处理。二话不说,准备环境开始搬家。
准备
为了不影响现有数据,我在虚拟机里搭建环境
- Windows XP,PHPStudy 搭建本机 PHP+Mysql,Python 2.7.13 32 位
- EMLOG 原有数据库
- Typecho 程序包
- Emlog2typecho 脚本
步骤
- 将原有数据库导入 Mysql
- 安装 Typecho
- Python 连接 Mysql 需要用 MySQL-python,悲剧的是 pip 库并没有 32 位适用。(即 pip install MySQL-python 无法自动安装)不慌,加州大学的镜像里有 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 手动安装即可
- 修改脚本配置开始转移。
好,吃完午饭回来,2M 多的数据库整整跑了一个小时。发现报错,似乎是评论没导入完全。查了下官方 Doc 文档,对比了下数据库,发现问题在于 Typecho1.1 数据库结构稍有变化,和脚本里写的有出入。改脚本很简单,但这个脚本的效率太低了所以另辟蹊径导入评论。
刚看了下文档对 Typecho 的数据库结构有所了解了,直接通过 SQL 命令按列迁移评论数据。
insert into typecho.typecho_comments (coid,cid,created,author,mail,url,ip,text)
select cid,gid,date,poster,mail,url,ip,comment from emlog.emlog_comment
后话
至此,数据库迁移部分基本结束。Emlog 是没有缩略名的,所以重写地址不能用类 WP 形式。另外文档分类也要自己再分配。临近期末,再说了。