合并表而不覆盖mysql phpmyadmin中的现有表
Posted
技术标签:
【中文标题】合并表而不覆盖mysql phpmyadmin中的现有表【英文标题】:Merge tables without overwriting existing ones in mysql phpmyadmin 【发布时间】:2013-07-04 01:36:20 【问题描述】:我有一个带有注册表单的“即将推出”页面。几周以来,我已经切换到另一个虚拟主机并继续在我的新主机上开发我的新网站,但继续让访问者在我的旧主机上注册。
现在我已将我的域指向我的新主机,并希望导出所有新订阅者并将它们导入新数据库。有些行可能使用相同的 ID。
如何轻松地将表从旧数据库导出并合并到新数据库?请注意,我不希望它覆盖任何具有相同 ID 的行,如果是,我希望它添加一个新行。
我尝试从旧数据库中导出表“wp_csp3_subscribers”并将其导入新数据库。但是得到一个错误,说 ID 已经存在。
【问题讨论】:
【参考方案1】:如果您使用的是 phpMyAdming(基于您的标签),您可以通过选择“自定义 - 显示所有可能的选项”而不是默认的“快速 - 仅显示最少的选项”来扩展导出选项。
在数据转储选项下,选择“INSERT IGNORE statements”,这将告诉 mysql 忽略任何具有重复主键的错误。
取自有关 IGNORE 选项的 mySQL 文档:
例如,如果没有 IGNORE,重复表中现有 UNIQUE 索引或 PRIMARY KEY 值的行会导致重复键错误,并且语句被中止。使用 IGNORE,行仍然没有插入,但不会发出错误。
希望这能回答你的问题。
【讨论】:
【参考方案2】:另外,如果您有两个来自转储的 sql 文件,请正常插入一个,可能未选中 Enable foreign key checks
,然后您的第二个文件想要连接数据,在那一秒删除 DROP TABLE IF EXISTS
和 CREATE TABLE
行文件。只留下LOCK TABLES
table WRITE;
和inserts
【讨论】:
以上是关于合并表而不覆盖mysql phpmyadmin中的现有表的主要内容,如果未能解决你的问题,请参考以下文章