合并两个具有相同结构的数据库 [MYSQL]
Posted
技术标签:
【中文标题】合并两个具有相同结构的数据库 [MYSQL]【英文标题】:Merging Two databases with the same exact structure [MYSQL] 【发布时间】:2013-03-24 10:23:05 【问题描述】:我的网站刚刚被黑,他们对我当前的数据库造成了一些破坏。
无论如何,我有几天前的备份。问题是当前数据库还有几千个帖子和线程/用户。
我只是想知道如何才能合并这两个数据库?
这两个数据库具有确切的结构,我希望备份覆盖当前数据库中的任何记录,只是我希望当前数据库填充任何新记录,如帖子、线程、用户等。
我知道你可以合并两个表,如果它们具有确切的结构,但是两个具有相同结构的数据库呢?
【问题讨论】:
REPLACE INTO table (id, col1, col2) VALUES (1, 2, 3), (2, 3, 4), ...
?
【参考方案1】:
我假设您有一个架构 s1
和一个架构 s2
。
要将 s1 中表的所有行插入 s2 中的表中,同时覆盖现有行,您可以使用:
REPLACE INTO s2.table_name
SELECT * FROM s1.table_name;
如果您不想触碰现有线路:
INSERT INTO s2.table_name
SELECT * FROM s1.table_name
ON DUPLICATE KEY IGNORE;
【讨论】:
架构是指数据库吗? 是的,确实如此。尽管在这种情况下,“数据库”一词可能“更正确”。 ***.com/questions/298739/… ON Duplicate,这是否意味着如果表中的任何列具有正在注入的值,那么它就不会覆盖吗? 我在尝试第二个代码时也遇到了这个错误。 #1064 - 您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 3 行的“IGNORE”附近使用正确的语法 如果您提供ON DUPLICATE KEY IGNORE
并且表中已经存在具有相同主键的行,则跳过该行的插入。【参考方案2】:
有一些方法可以做到这一点: 1.) 使用命令行工具,如schema Sync 和mysql diff
2.) 或使用 SQLyog
在这里了解更多 http://blog.webyog.com/2012/10/16/so-how-do-you-sync-your-database-schema/
【讨论】:
【参考方案3】:根据我对 DUPLICATE KEY IGNORE 的经验,它不起作用。相反,我发现
插入忽略 ta2_table 选择 * FROM ta1_table;
像魅力一样工作
【讨论】:
以上是关于合并两个具有相同结构的数据库 [MYSQL]的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个同样的MYSQL数据库表合并。表一表二的表结构是一样只是内容一个表多了些并且有部分字段修改过