2013-04-06 176 views
1

我需要将旧数据库导入到WordPress。容易吗?那么不那么容易,我需要保持相同的帖子ID,因为我使用了包含帖子ID的自定义永久链接结构。将自定义数据库导入wordpress并保留帖子ID

例如:/%postname%+id-%post_id%.html。

我该怎么做?

+0

@SAM:编辑时,请修复需要在帖子中修复的_everything_。不要只删除一个标签。 – 2014-07-10 11:15:48

+0

@ S.L.Barth对不起,我正在清理标签问题。 – Mehraban 2014-07-10 11:18:12

回答

0

找出您的旧数据库中的最旧(最小的id)。 让我们假设这45

开始用新安装的WP和删除的“Hello World”的帖子这样的帖子,post_meta和term_relationships表没有什么做的是“世界你好”后

截断自己的帖子表,并设置初始值45,从而进入了第一个记录将有ID 45.

同时

之前迁移旧的数据库记录开始迁移,一个记录,计算出的区别和prev记录。例如,如果你的下一篇文章得到了ID 46,那么46-45 = 1。 1是好的,正常迁移也是如此。 (通常运行wp_insert) 当您发现差异不是1时,则根据需要创建尽可能多的虚拟记录。例如,如果记录是49,则49-45 = 4。这意味着,你需要3个虚拟记录。因此,在帖子标题中运行3个wp_inserts短语“待删除”。 ,然后做你的第49次记录迁移。

你继续这样下去,直到你达到你最古老的(最年轻的)记录。

然后只需删除标题为“待删除”的所有记录。但始终使用WP api。以便跨表保持关系完整性。

+0

我明白。谢谢 ! – 2013-04-06 18:21:50

+0

这可能是矫枉过正 - 即使它是一个自动增量,也没有什么能阻止你在posts表中设置任何你想要的ID。如果“旧”数据库是WordPress的数据库,那么您可以使用'mysqldump'来创建一个导出文件,您可以将它们直接导入新数据库。 – doublesharp 2013-04-06 19:06:16

1

假设这些都是WordPress数据库,那么处理此问题的最简单方法是使用mysqldump创建导出,然后针对新数据库执行生成的SQL文件。默认情况下它会导出所有的表格,所以如果你只想要其中的一些表格,你需要明确地指定它们。 WordPress的帖子的 “重要” 的表格:

  • wp_posts - 职位
  • wp_postmeta - 后元值
  • wp_term_relationships - 职位,以分类
  • wp_term_taxonomy - 分类
  • wp_terms - 实际的标签和类别值

要导出您的dat基于SQL文件,适当地替换USERNAME,PASSWORD和DATABASE。这将删除/创建/填充表,因此如果您只想要数据使用–no-create-info选项。

mysqldump -u USERNAME -pPASSWORD DATABASE > dump.sql 

要那么dump.sql文件导入到新的数据库:

mysql -u USERNAME -pPASSWORD NEW_DATABASE < dump.sql 

所有数据库ID将保持不变。