0

我有一个 60 GB 的数据库,我有一个 13 GB 的实时数据库,现在在实时数据库上也有一些新条目和更新的条目。考虑 13GB 数据库具有与 60GB 相同的初始数据,其中一些行已更新,最后几个条目是全新的。不,我想将 13 GB 复制到 60 GB。我有转储但插入命令,当我尝试导入它时,它向我显示外键约束错误并说它无法删除或更新。因此,我需要查询 MySQL 导入,以便它复制新数据并更新新数据(如果有),并且转储文件是带有创建的常规转储文件,插入所有这些文件,并且无法更改其中的任何内容:(

4

1 回答 1

0

如果磁盘空间不是问题,我会这样做:

  1. 使数据库脱机
  2. 如果原来的 dasebase 被称为 stuff,则创建一个名为 stuff_extra 的新数据库
  3. 将 13 GB 转储加载到 stuff_extra。您现在将拥有两个在架构上相同但在某些数据上不同的数据库
  4. 对于 stuff 中的每个表
    1. 删除 stuff.table 中同时在 stuff_extra.table 中的所有行。您可以只删除已更改的行,但我认为这同样快。利用multi table delete
    2. 将 stuff_extra.table 中的所有行插入 stuff.table。利用insert select

您现在将拥有来自 stuff_extra 的所有行。并且所有更新的数据都已更新(或真正删除并插入)。

于 2012-10-25T17:53:20.190 回答