OldCat's Diary

oldcat

把两个TYPECHO博客合二为一

May 29th, 2015 12:01 AMNo CommentsFiled under: 网站技术Feed for this Entry

前几天我在天蓝蓝博主的帮助下把我的用WORDPRESS搭建的博客非常完美无缺地转换为TYPECHO程序,详见bluesky写的《Wordpress转Typecho测试》,但是我暂时还没直接把这W2T的网站放在原来的空间里,而是临时找了个免费空间上传上去并挂了一个二级域名。
大约是大前天我又想把我的另一个也是用TYPECHO建的私人笔记与我这个博客BLOG合并到一起,一是这个NOTE所用的域名我只买了一年并不想再续费,二是两个网站管理起来也是很麻烦,还是合并到一个准备长期续费一直写下去的网站里为好,所以就开始了合并的研究工作。
要使两个网站的数据合并一定要通过PHPMYADMIN数据库进行了,但如何把第二个库导入第一个并与其共存呢?我搞了很久,最后终于被我抠了出来,基本上还是可以的。
我原来的想法是把两站的文章按照发布的时间顺序排列ID,但是没成功,虽然我知道typecho_contents和typecho_comments这两个表中的created字段是表示发表时间,但没办法因此去改变文章的ID,只好作罢,能把文章和评论完整导入就满意了。

在两个TYPECHO网站数据合并之前首先进要保留的网站(BLOG)的数据库,看看typecho_contents表的cid,content是内容的意思,下划线前面的typecho是库前缀,我这两个网站都是用的默认typecho_,翻到最后一页看到cid是996,其实文章并没达到996篇,这里面有些是WORDPRESS里自动保存和修订的,不用管这些,只要记住这个数值。
然后再看typecho_commnets这个表,comment是评论的意思,查找coid,还是向后翻页,我的最大coid是285,不好意思了,我这里没人来的,绝大部分还是垃圾评论,同样记下这个数值。
最后再打开typcho_metas这个表,在这里记录的是标签和分类,尽管TYPECHO 0.9版与1.0版在后台显示有所不同,但在数据库里还是在同表里。记下mid值,我这里就不用翻页了,就三个分类,其余的是标签,最大是15,记下这数就可以了。

打开要合并的私人网站(NOTE)的PHPMYADMIN,以上记下的数值在这里要用到。在PMA里点SQL,执行几条UPDATE...SET 指令:

UPDATE typecho_contents SET cid=cid+'996';
UPDATE typecho_comments SET SET=cid+'996';
UPDATE typecho_comments SET coid=coid+'285';

我最初只执行了上面三条指令,但导入后前台不显示合并的文章,后台可见,因为没有分类嘛。
那就再接着运行:

UPDATE typecho_metas SET mid=mid+'15';
update typecho_relationships set mid=mid+'15';
update typecho_relationships set cid=cid+'996';

typecho_relationships是文章与分类及标签的关联,这个也是要UPDATE的。

执行了以上几条指令后可以浏览下typecho_contents这个表,看看NOTE第一篇《世界,你好!》的cid是不是由1变成了997了?肯定是的,不然那就是出错了。contents、comments和metas都没问题就可以导出了,要注意导出的是typecho_contents、typecho_comments、typecho_metas和typecho_relationships这四张表,可不是Check All (全选)!全选那再导入BLOG后可就变成NOTE,而不是BLOG + NOTE了。
然后再进入BLOG的PHPMYADMIN,导入这个数据,成功后进入BLOG,可以看到俩网站的文章都在一起了,就是有点乱,说乱也不乱,就是难看。我的BLOG用的模板导航菜单横排是九个,除了HOME、GUESTBOOK和ABOUT再就是原来的分类,那么后合并的NOTE分类就又在下面排了一行,这个只能进后台按照原来BLOG的分类合并一下吧,然后删除NOTE的分类,再一个乱就是文章的时间顺序,我刚才在前面说过了,没办法,能合二为一我就很满足了。

TAGS: typecho, phpmyadmin, 数据合并

Leave a Comment: