需求场景
WordPress搬迁部分文章数据到另一个已经有大量文章的站点,默认Wordpress导出导入插件进行操作的时候必须要求批量导出或者导入,有第三方插件支持部分文章导出xml数据,同样面临文章ID重复和附件不能导出的问题。
解决方法
1、从源站数据库导出需要导出的数据,主要3个表: wp_posts表、wp_postmeta表、wp_term_relationships表,最后wp_term_relationships表是记录文章分类、标签信息的,均通过文章ID来区分数据。
如我们需要导出ID大于1000的文章数据:
1 2 3 |
SELECT * FROM `wp_posts` WHERE `ID` > 1000; SELECT * FROM `wp_postmeta` WHERE `post_id` > 1000; SELECT * FROM `wp_term_relationships` WHERE `object_id` > 1000; |
2、找到目标站最新的文章ID,计算文章ID差数,并对导出的数据进行修改,比如目标站的最新文章ID为3000,那么我们导入的文章ID最小为3000+,差数就是2000,这里可以建一个临时数据库做修改数据用。
更新sql语句为:
1 2 3 4 |
UPDATE `wp_posts` SET `ID`= (ID+2000) WHERE 1; UPDATE `wp_postmeta` SET `post_id`=(post_id + 2000) WHERE 1; UPDATE `wp_postmeta` SET `meta_value`=(meta_value+2000) WHERE `meta_key` = '_thumbnail_id'; # 这句是修改特色图片 UPDATE `wp_term_relationships` SET `object_id`=(object_id + 2000) WHERE 1; |
3、导入数据文件到目标数据,记得先备份数据;
导入时需删除SQL文件内创建数据库相关的语句,只保留插入数据的语句,否则会报错。
4、最后进行附件的迁移即可。