我有两个运行相同架构的MySQL实例。一个是在云中;一个在我当地的盒子里。本地版本的主表需要几个测试行。
实际上,我想对生产表上的单个记录执行类似mysqldump或mysqlhotcopy的操作,然后将该记录“还原”到本地实例上的同一个表中。我不想复制整个表格。如果本地表上有行,我希望它们保持不变。
我对复制行更改的PK很好。我不关心外键,如果有的话。
这个表格很大而且非常复杂,我使用select语句打印记录然后将其格式化为插入是非常重要的。
我有什么选择?
答案 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命令来对目标实例执行。这可能不是移动大量数据的最有效方法,但对于单行,它可能没问题。