如何将单个行/记录从一个MySQL实例复制到另一个?

时间:2014-08-31 17:33:03

标签: mysql mysqldump

我有两个运行相同架构的MySQL实例。一个是在云中;一个在我当地的盒子里。本地版本的主表需要几个测试行。

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

我对复制行更改的PK很好。我不关心外键,如果有的话。

这个表格很大而且非常复杂,我使用select语句打印记录然后将其格式化为插入是非常重要的。

我有什么选择?

1 个答案:

答案 0 :(得分:7)

如果您已经熟悉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命令来对目标实例执行。这可能不是移动大量数据的最有效方法,但对于单行,它可能没问题。