2014-08-31 50 views
3

我有两个使用相同模式运行的MySQL实例。一个在云端;一个在我的本地盒子上。本地盒子版本在其主表中需要几个测试行。如何将单个行/记录从一个MySQL实例复制到另一个?

实际上,我想对生产表上的单个记录执行类似mysqldump或mysqlhotcopy的操作,然后将该记录“还原”到本地实例的同一个表中。我不想复制整个表格。如果本地表上有行,我希望它们保持独立。

我很好,复制行的PK发生了变化。我不在乎外键,如果有的话。

该表格非常庞大而且复杂,因此使用select语句打印记录并对其进行格式化是不平凡的。

我有什么选择?

+0

[联合存储引擎](https://dev.mysql.com/doc/refman/5.6/en/federated-storage-engine.html)将是一个选项。 – VMai 2014-08-31 17:37:42

回答

5

如果你已经熟悉了mysqldump的,我会提醒你的mysqldump有--where选项,因此,如果你写的条件,你可以得到一个单行:

mysqldump databasename tablename --where "id=12345" --no-create-info --skip-add-locks --host=db1 | \ 
    mysql --host=db2 

你也可以请使用SELECT...INTO OUTFILE将所需查询的结果转储到平面文件中,即使是单行查询。然后LOAD DATA INFILE在另一个实例上导入该文件。

你也可以在你选择的语言中编写一个简单的脚本。连接到两个实例。从源实例中选择一行,将其保存在脚本中的变量中。然后形成一个INSERT命令以针对目标实例执行。这可能不是移动大量数据的最有效方式,但对于单行来说,这样可以。

+0

谢谢比尔。一般来说,这些对我来说都是很好的选择。不幸的是,我查看了Cloud SQL文档,它不支持选择outfile,并且不支持mysqldump。 : - /有没有一种选择可以在其他地方容易导入的格式选择一行? – user3562927 2014-08-31 22:39:41

+0

查看我上面提到的第三个选项。用PHP或Python或Ruby或Perl或任何适合您的脚本编写脚本,将行读取到数组中,并使用第二个数据库连接将数据库插入到目标实例中。 – 2014-09-01 04:36:23

相关问题