我有一个 60 GB 的数据库,我有一个 13 GB 的实时数据库,现在在实时数据库上也有一些新条目和更新的条目。考虑 13GB 数据库具有与 60GB 相同的初始数据,其中一些行已更新,最后几个条目是全新的。不,我想将 13 GB 复制到 60 GB。我有转储但插入命令,当我尝试导入它时,它向我显示外键约束错误并说它无法删除或更新。因此,我需要查询 MySQL 导入,以便它复制新数据并更新新数据(如果有),并且转储文件是带有创建的常规转储文件,插入所有这些文件,并且无法更改其中的任何内容:(
问问题
1131 次
1 回答
0
如果磁盘空间不是问题,我会这样做:
- 使数据库脱机
- 如果原来的 dasebase 被称为 stuff,则创建一个名为 stuff_extra 的新数据库
- 将 13 GB 转储加载到 stuff_extra。您现在将拥有两个在架构上相同但在某些数据上不同的数据库
- 对于 stuff 中的每个表
- 删除 stuff.table 中同时在 stuff_extra.table 中的所有行。您可以只删除已更改的行,但我认为这同样快。利用
multi table delete
- 将 stuff_extra.table 中的所有行插入 stuff.table。利用
insert select
- 删除 stuff.table 中同时在 stuff_extra.table 中的所有行。您可以只删除已更改的行,但我认为这同样快。利用
您现在将拥有来自 stuff_extra 的所有行。并且所有更新的数据都已更新(或真正删除并插入)。
于 2012-10-25T17:53:20.190 回答