2013-04-06 174 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將保持不變。