【问题标题】:Import some database entries through PHPMyAdmin with overwrite通过 PHPMyAdmin 导入一些数据库条目并覆盖
【发布时间】:2012-08-25 10:57:57
【问题描述】:

我通过 PhpMyAdmin 从本地存储在我的 MySQL 数据库中的数据库中导出了几个条目,我只想替换在线托管的目标数据库中的那些条目。不幸的是,当我尝试这样做时,PHPMyAdmin 说这些帖子已经存在,因此他无法删除它们。

我需要花费大量时间在其余帖子中手动搜索这些条目并一次删除它们,所以我想知道是否有任何解决方法可以在导入时覆盖这些条目。

提前致谢!

【问题讨论】:

  • 编辑您的问题并在 sqlfiddle 上分享您导出和要导出的全部内容(只有几个原始/真实条目)并在此处提供链接。然后在几分钟内得到你的结果:)
  • 似乎您有一个限制相同条目重复的主键。如果是这种情况,如果您有兴趣,可以通过存储过程获得解决方案。如何?从一个表中选择记录并通过循环一一插入行,使用 1062 的 continue 处理程序,其中重复

标签: mysql database import phpmyadmin export


【解决方案1】:

一个很好的选择是在本地从 phpMyAdmin 初始导出时处理此问题。从 phpMyAdmin 导出时:

  1. 导出方式:自定义
  2. 格式:SQL
  3. 格式特定选项 - 选择“数据”(而不是“结构”或“结构和数据”)
  4. 在数据创建选项 - 转储数据时使用的功能:将“插入”切换为“更新”
  5. 点击开始!

导入您的生产数据库。 (请务必事先备份您的生产数据库以防万一)

我知道这是一篇旧帖子,但它实际上帮助我找到了内置于 phpMyAdmin 中的解决方案。希望它可以帮助别人!

【讨论】:

  • 这真的很有帮助,谢谢,正是我想要的:D
【解决方案2】:

这是一种快速而肮脏的方法。其他人可能有更好的解决方案:

听起来您正在尝试运行 INSERT 查询,而 phpMyAdmin 告诉您它们已经存在。如果您使用 UPDATE 查询,您可以更新信息。

我会将您在那里的查询复制到文本编辑器中,最好是可以处理查找和替换的文本编辑器,例如 Notepad++ 或 Gedit,然后替换一些代码以将查询从 INSERT 更改为 UPDATE。

见:http://dev.mysql.com/doc/refman/5.0/en/update.html

或者,您可以删除它们,然后运行您的 INSERT 查询。

您也许可以使用一些逻辑与查找和替换来进行删除查询,首先删除它们。

http://dev.mysql.com/doc/refman/5.0/en/delete.html

【讨论】:

  • 谢谢,我丢失了导出帖子的引用,因为我批量删除了所有行中的一列,所以我回到以前的备份,删除了我需要保留其列数据的条目,然后才删除我从其余部分中删除了数据,然后我将第一个带有数据的数据重新导入到位。
【解决方案3】:

查看insert on duplicate。您可以将语法添加到本地存储的条目中,或者导入到临时数据库中,然后运行INSERT ... SELECT ... ON DUPLICATE KEY UPDATE。如果您可以发布架构,它将帮助我们更好地指导您。

【讨论】:

    猜你喜欢
    • 2013-04-21
    • 2019-06-29
    • 2014-04-03
    • 2021-11-10
    • 2014-08-06
    • 2011-05-28
    • 2012-03-24
    • 2012-03-24
    • 2014-10-03
    相关资源
    最近更新 更多