1

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

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

我怎样才能做到这一点?

4

2 回答 2

1

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

  • wp_posts- 帖子
  • wp_postmeta- 发布元值
  • wp_term_relationships- 分类的帖子
  • wp_term_taxonomy- 分类法
  • wp_terms- 实际标签和类别值

将数据库导出到 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。

于 2013-04-06T19:17:24.480 回答
0

在您的旧数据库中找出您最旧的(和最小的 id )。假设是 45。

从全新安装的 WP 开始并删除“hello world”帖子,因此 post、post_meta 和 term_relationships 表与“hello world”帖子没有任何关系

截断您的帖子表并将起始值设置为 45,以便输入的第一条记录的 ID 为 45。

开始您的迁移,一次一条记录

在迁移旧数据库记录之前,计算该记录与上一个记录之间的差异。例如,如果您的下一篇文章的 ID 为 46,则 46-45=1。1 好,所以正常迁移。(正常运行 wp_insert )当您发现差异不是 1 时,然后根据需要创建尽可能多的虚拟记录。例如,如果记录是 49,则 49-45=4。这意味着,您需要 3 个虚拟记录。因此,运行 3 wp_inserts,并在帖子标题中使用短语“to be deleted”。然后进行第 49 条记录迁移。

你一直这样下去,直到你达到你最大(最年轻)的记录。

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

于 2013-04-06T17:30:14.787 回答