【问题标题】:How can I copy a single row/record from one MySQL instance to another?如何将单行/记录从一个 MySQL 实例复制到另一个?
【发布时间】:2019-11-07 20:13:04
【问题描述】:

我有两个使用相同架构运行的 MySQL 实例。一个在云端;一个在我当地的盒子上。 local-box 版本在其主表中需要几个测试行。

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

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

该表足够大且足够复杂,因此使用 select 语句打印记录然后对其进行格式化以进行插入对我来说并非易事。

我有什么选择?

【问题讨论】:

标签: mysql mysqldump


【解决方案1】:

如果你已经熟悉 mysqldump,我会提醒你,mysqldump 有一个--where option,所以如果你写下它的条件,你可以得到一行:

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

您还可以使用SELECT...INTO OUTFILE 将您想要的任何查询的结果转储到平面文件中,甚至是单行查询。然后LOAD DATA INFILE 将该文件导入另一个实例。

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

【讨论】:

  • 谢谢比尔。总的来说,这两个对我来说都是不错的选择。不幸的是,我查看了 Cloud SQL 文档,它不支持选择输出文件,也不支持 mysqldump。 :-/ 是否可以选择以易于在其他地方导入的格式的行?
  • 见我上面提到的第三个选项。用 PHP 或 Python 或 Ruby 或 Perl 或任何适合您的方式编写脚本,将行提取到数组中,然后使用与目标实例的第二个数据库连接将其插入。
猜你喜欢
  • 1970-01-01
  • 2015-05-05
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2012-06-26
相关资源
最近更新 更多