我有它运行一个MySQL查询脚本,是这样的:壳MySQL查询结果保存到一个文件
#!/bin/sh
user="root"
pwd="test"
database="mydb"
command="long...
long... query in
multiple lines"
mysql -u $user -p$pwd << EOF
use $database;
$command
EOF
这个查询做了备份,从表到另一个。是否可以将查询结果保存在文件中而不使用mysql INTO OUTFILE
?我只想知道查询失败或成功。
如果成功像1 row(s) affected
或者如果它失败Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ...
更新
解决方案1:()作为命令的链条,所以包装他们在一个变量获得这些命令的结果。然后只需将该变量的结果输出到文件中。
output=$(mysql -u $user -p$pwd << EOF
use $database;
$command
EOF
)
echo "$output" >> /events/mysql.log
解决方案2:使用三通作为系统命令来发送命令到一个文件的结果,但是这需要从crontab中完成的,这样的:
*/1 * * * * root sh /events/mysql.sh |tee -a /events/mysql.log
http://forums.mysql.com/read.php?10,391070,391983#msg-391983
我的工作液:
user="root"
pwd="root12345"
database="mydb"
command="long ...long query"
mysql -u $user -p$pwd <<EOF>> /events/mysql.log 2>&1
use $database;
$command;
EOF
使用如果输出中存在'affected',则匹配正则表达式。 –
该消息不仅仅是'mysql'命令的标准输出吗?使用'done> output.log'不适用于这个吗? –
@EtanReisner是的,它是来自mysql命令的stantard输出。如何在这种情况下使用完成? – Alpha2k