我有两个数据库fooDB
和barDB
,两者都有一个名为options
的结构相同的表。我想将fooDB.options
中一个单元格的值复制到barDB.options
。我无法使用(非本地)outfiles,我有两个用户,他们只能访问两个数据库中的一个。使用鼠标复制和粘贴不起作用,因为该值太复杂。
任何想法,如何使用MySQL命令行客户端复制值?我想过使用变量,但是AFAIK你不能在同一个CLI会话中改变你的用户。有任何想法吗?它应该是一个简单快速的解决方案:当然我可以做一个mysqldump或者其他什么,但这对于一个值来说是过度的(并且花费太多时间)。
答案 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转义了特殊字符。