第三方数据库导入wordpress的现成工具不多,要是blogger这样的大厂产品可能还好一点,对于第三方的建站数据库来说有点费事。一开始准备用数据库同步软件来实现,后来发现这个方案稳定性太差,数据稍微有点问题就直接报错。经过摸索,倒是找出了一条导入的途径,虽然也繁琐,但是相对于一篇一篇转移来说还是要好许多,更不要说还有阅读量等记录数据。实现的方法就是通过网页端的phpadmin直接导入csv文件来实现。亲自成功实践了从wellcms数据库导入wp的数据。

首先理清一下思路。WP中的数据库涉及到数据迁移的主要是这样几个:

wp_postmeta: 该表中记录了帖子的阅读数量或者其他等操作记录(我一般不用其他的,就记录一个帖子浏览数据就可以),meta_id为操作记录序号,post_id为主题的id号,meta_key为操作行为,比如浏览数量的名称就是views,meta_value表示该操作的值,对应views就是浏览次数。

wp_posts:该表中记录了文章的标题内容等等大量的参数,这是重要的一个表。ID为文章的id号,post_author为文章的作者,post_datetime为文章的创建日期,格式为yyyy-MM-dd hh:mm:ss的格式,post_datetime_gmt为格林威治时间对应的日期,按照北京时间的话,就是少8小时。post_content为文章内容,post_title为文章标题,其他的可以参照原有表中,比如post已发布,publish公开,其中有一个guid属于文章的固定连接,按照默认的就是http://domain/?p=ID,其中的domain为域名,id就是前面的文章id。

post_terms:该表为分类,并不涉及到二级关系,只有term_id分类编号,name分类名称,slug分类别名(可空),term_group。

post_term_relationships:该表也是一个重要的表,就是确定每篇文章对应所在的分类所属。object_id就是文章的id,term_taxonomy_id为所属分类的id,term_order默认为0。

term_taxonomy:该表为分类相互关系的表,是否为一级分类,是否为二级分类,所属父分类为哪一个。term_taxonomy_id和term_id值相等,也就是分类的id,taxonomy为category,后面的description为分类描述,parent为所属的父分类,如果有则填入父分类的id,如果没有则填写0, count表示该分类下的文章总数,迁移的时候这个可以不填。

其他的表users涉及到用户的因为个人没有其他注册的用户,一般就自己。所以这块没有测试,不知道涉及到密码计算方法是否一致。

所以以内容为主的个人博客站点,一般迁移的表就是这5个表,

迁移的工具:网页版的phpadmin(宝塔后台自带),excel文件。

操作方法:

1)首先讲要迁移的源站点数据库通过进入phpadmin讲对应的表导入(不同的网站存储的内容结构都不一样),找到对应的文章记录,分类记录,浏览记录等等这些表内容,导出为csv文件

2)在excel中数据导入每个csv文件,这里就要利用excel的强大功能来进行数据的匹配和格式化。按照目标网站的数据库(也就是wp的数据库的表结构格式),将原表的数据通过excel进行转换引用(反正一切办法),达到与wp的表结构完全一样的外观,有些无数据的结构字段要求默认值为0,那么就是填0。

3)整体表格外观一致后,导出当前表为csv文件(注意查看该文件是否为utf-8编码),这时候可以将第一行的表头等记录删除,只保留数据行。

4)进入wp的宝塔后台,用phpadmin进入后,对照对应的表,导入csv文件,取消允许中断,勾选忽略插值错误,开始导入。如果导入顺利则就提示导入了多少记录,如果有其他提示信息,可以刷新后到导入后的数据中查看,是否可能夹带了错误值或者空行或者标题行等。

5)将上述的几个表全部导入后,则就可以到wp的管理中心或者网站首先去刷新了。

6)这时候如果出现分类不显示完整或者不正确,那么可以尝试在后台新建一篇文章,所属分类将所有分类都勾选上,发表后分类就会自动修复错误,而且分类对应的文章数量统计也正确了。

补充备注1:excel中对数值型日期的转换一般是:TEXT(数值型日期的单元格/24/60/60+25569.3333333333,”yyyy-MM-dd hh:mm:ss”),可以一次性将数据转换为wp所需要的格式。

补充备注2:一个公式,INDEX(表名称1!B:B,MATCH(要查询的单元格,表名称2!A:A,0),1),其中match是返回符合要查询单元格的值在表名称2的A列所在的行号,index则继续将表名称1的B列所在改行的数据返回给计算公式。最后一个1为B:B单元格范围的第一列,如果单元格范围为B:E,则可以为1,2,3,4,对应BCDE

补充备注3:如果是wordpress导入到wordpress,直接用宝塔后台的同用户名和同密码的备份文件导入,会出现访问跳转的情况,应该是数据库里面记录了当前站点网址的一个数据导致,所以在控制后台的输入中,首页网址尽量用/代替。不过更稳妥的替代方法是在密码用户名不同的情况下,直接将源数据库的表分别导出为sql文件,然后将目标数据库的同名表删除后,在目标收据库结构下导入源站导出的sql表文件。

添加新评论