1

我的主要办公室有一个 mysql 数据库和 4 个用于事件和收集客户数据的异地服务器。当我将服务器带回总部时,我需要将所有数据从异地数据库发送到主数据库而不覆盖现有数据,以便我可以清除远程数据库并将其新鲜发送到下一个事件。

我查看了 mysqldump,它总是丢弃所有以前的数据,这将是非常糟糕的。

如果有人可以帮助我指出正确的方向,将不胜感激。

注意:场外服务器在活动中没有互联网连接,场外服务器在办公室时没有连接到局域网。

最终,我试图弄清楚如何做到这一点,以便我可以将其放入脚本中。

4

2 回答 2

0

您可以在命令行中配置与 drop 或 replace/insert 相关的 mysqldump 的行为。

尝试

mysqldump --help

您也可以使用INSERT SELECT

您还可以使用 SELECT CONCAT(创建 CSV)和LOAD DATA来导入 CSV 语句。

于 2012-02-21T06:53:03.120 回答
0

我会用一个小程序(可能是用 Java 编写的)来做这种操作,它从临时数据库中读取数据并将其插入到主数据库中,因为它可以让我完全控制复制的内容和不复制的内容。

如果您想为此使用 mysqldump,那么我认为以下应该有效:

  1. 使用 mysqldump 将事件中的数据库转储到文件中
  2. 为您的主数据库实例创建一个临时数据库(因此您的 primary_db 和temporary_db 在结构上是相同的并且在同一个mysql-instance 中)
  3. 将转储加载到临时数据库中
  4. 运行INSERT INTO ... SELECT从临时数据库到主数据库:

    INSERT INTO primary_db.customer (name,address) SELECT name, address FROM temporary_db.customer

于 2012-02-21T06:40:35.743 回答