2014-03-05 61 views
0

帶有Form插件的WordPress網站的用戶意外刪除了特定表單的所有條目。將MySQL轉儲與現有表合併

我進入每日備份,並有一個.sql文件,其中包含存儲表單信息的表的所有數據。

現在我需要將其合併到數據庫中,但轉儲使用INSERT INTO並立即停止並出現錯誤,因爲大多數條目已存在。

我試過使用「ON DUPLICATE KEY UPDATE ID = ID」,但它忽略了所有內容。

我一直在這裏和谷歌搜索幾個小時沒有任何解決方案。

轉儲的基本是:

LOCK TABLES `wp_frm_items` WRITE; 
INSERT INTO `wp_frm_items` (`id`, `item_key`, `name`, `description`, `ip`, `form_id`, `post_id`, `user_id`, `parent_item_id`, `updated_by`, `created_at`, `updated_at`) VALUES (2737,'jb7x3c','Brad Pitt','a:2:{s:7:\"browser\";s:135:\"Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25\";s:8:\"referrer\";s:38:\"http://mysite/myform/\r\n\";}','192.168.1.1',6,0,NULL,NULL,NULL,'2013-06-30 15:09:20','2013-06-30 15:09:20'); 
UNLOCK TABLES; 

ID#2737存在,所以我要麼想忽略它,還是更新現有的表。

似乎會有一種簡單的方法將數據從MySQL轉儲導入到現有數據庫中。

ps。我試圖在phpMyAdmin中執行此操作

回答

1

如果這些行的數據未更改,則可以使用REPLACE而不是INSERT

如果你想跳過行,一種可能是使用臨時表。將行加載到那裏,並且DELETE那些在舊錶中存在id的行。

DELETE FROM my_new_temptable AS temp WHERE temp.id IN (SELECT id FROM wp_frm_items) 

然後只需將其餘行插入wp_frm_items

或者,您可以將新行移動到臨時表,然後再從轉儲進行恢復,並將它們從那裏複製回原始表。有很多可能性。

此外,許多SQL工具具有表合併功能。