У меня есть скрипт, который выполняет запрос 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 ...
Update
Решение 1:() действуют как цепи команд, так что упаковка их в переменной получает результат этих команд , Затем просто выведите результат этой переменной в файл.
output=$(mysql -u $user -p$pwd << EOF
use $database;
$command
EOF
)
echo "$output" >> /events/mysql.log
Решение 2: использование тройник в качестве системной команды, чтобы отправить результат команды в файл, но это должно быть сделано из кронтаба, как это:
*/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. Как это сделать в этом случае? – Alpha2k