繁体   English   中英

将MySQL转储与现有表合并

[英]Merge MySQL Dump with Existing Table

带有Form插件的WordPress网站的用户意外删除了特定表单的所有条目。

我进行了每日备份,我有一个.sql文件,其中包含表格信息存储表的所有数据。

现在,我需要将其合并回数据库,但是转储使用INSERT INTO并立即停止,并出现错误,因为大多数条目已经存在。

我尝试使用“ ON DUPLICATE KEY UPDATE ID = ID”,但它忽略了所有内容。

我一直在这里和Google上搜索了两个小时,没有任何解决方案。

转储的基本内容是:

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中执行此操作

如果这些行的数据没有更改,则可以使用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工具都具有表合并功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM