使用MySQL CLI将值从一个数据库复制到另一个数据库

时间:2014-10-07 07:54:33

标签: mysql

我有两个数据库fooDBbarDB,两者都有一个名为options的结构相同的表。我想将fooDB.options中一个单元格的值复制到barDB.options。我无法使用(非本地)outfiles,我有两个用户,他们只能访问两个数据库中的一个。使用鼠标复制和粘贴不起作用,因为该值太复杂。

任何想法,如何使用MySQL命令行客户端复制值?我想过使用变量,但是AFAIK你不能在同一个CLI会话中改变你的用户。有任何想法吗?它应该是一个简单快速的解决方案:当然我可以做一个mysqldump或者其他什么,但这对于一个值来说是过度的(并且花费太多时间)。

1 个答案:

答案 0 :(得分:0)

这个想法是生成更新(或插入)所需值的SQL脚本。要生成SQL,请使用此命令( username1 - fooDB数据库的用户名):

mysql -u username1 -p -N -s -r -e "SELECT CONCAT('UPDATE barDB.options SET value = ', QUOTE(value), ' WHERE id = 1;') FROM fooDB.options WHERE id = 1" > file_name.sql

然后你会得到 file_name.sql ,例如:

UPDATE barDB.options SET value = 'Your value here' WHERE id = 1;

然后只需运行此脚本( username2 - barDB数据库的用户名):

mysql -u username2 -p < file_name.sql

有些人使用MySQL command line options

  • -N - 不要在结果中写入列名
  • -s - 使用非常规输出格式
  • -r - 禁用字符转义

我在命令行选项中禁用了字符转义,因为在SELECT查询中已经使用QUOTE function转义了特殊字符。