【问题标题】:Merge MySQL Dump with Existing Table将 MySQL 转储与现有表合并
【发布时间】:2014-04-08 02:38:18
【问题描述】:

带有表单插件的 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 中执行此操作

【问题讨论】:

    标签: mysql wordpress merge phpmyadmin dump


    【解决方案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 工具都具有表合并功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 2018-02-15
      • 2012-12-26
      • 1970-01-01
      • 2022-12-19
      相关资源
      最近更新 更多