2015-06-08 3 views
0

Мне нужно запустить ежемесячный скрипт bash через cron, который связан с биллинговой системой нашей компании. Это делается с помощью двух хранимых процедур. Когда я запускаю их через консоль MySQL и workbench, они работают нормально.Выполнение mutiple MySQL запросов в сценарии bash

Я просмотрел this article, и это в основном так, как я это делаю.

Я называю через хрон, сценарий оболочки, который выглядит следующим образом:

mysql -h 192.168.1.1 -u<username> -p<password> mydatabase < /path/to/billing_periods.sql 

Мой текстовый файл, который имеет в нем команды выглядит следующим образом:

call sp_start_billing_period(); 
call sp_bill_clients(); 

Что происходит, что первая запрос выполняется, а второй - во второй строке.

я могу сделать хранимую процедуру, которая оборачивает эти два - но я просто надеялся узнать, почему это происходит ... Может быть, я сделал ошибку или ограничение в том, как вы это сделать ..

I также считается делать это (два вызова MySQL оболочки):

mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_start_billing_period();" 

mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_bill_clients();" 

ответ

0

Вы можете попробовать разделить каждое утверждение точкой с запятой.

mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_start_billing_period();call sp_bill_clients();" 

Если у вас есть ваши заявления в файле вы можете сделать:

while read LINE; do mysql -u<username> -p<password> mydatabase -e"$LINE";echo "-----------";done < statements.sql 
+0

Я очень поздно в моем ответе, я извиняюсь. Ваше предложение отлично работало; Спасибо! - –

0

Я думаю, вы только позволили выполнить один оператор в вашем входе .sql файл, обратитесь к документации по MySQL (на странице Справочника) для -e заявления.

· --execute=statement, -e statement 
     Execute the statement and quit. The default output format is like that produced with --batch. 

Ключ -e неявно. По крайней мере, когда я выполняю разные запросы mysql, я помещаю их в свой собственный скрипт, как вы уже предложили.

Смежные вопросы