MySQL Shell Scripting для создания процедур - PullRequest
1 голос
/ 25 апреля 2011

Я работаю над сценарием установки для Mac OSX и использую сценарий оболочки для создания базы данных и всех таблиц, которые нужны программе для использования.Проблема, с которой я сталкиваюсь, заключается в создании процедуры, которая нам нужна.Я пробовал несколько способов реализации и задавался вопросом, знает ли кто-нибудь пример или это возможно.Ниже то, что я имею, насколько процедура идет.Буду признателен за любую помощь.

Процедура:

DELIMITER //
CREATE PROCEDURE Hours_Procedure()
BEGIN
DECLARE avg_usage FLOAT;
DECLARE max_time TIMESTAMP;
DECLARE counter INTEGER;
DECLARE NumOfNodes INTEGER;
DECLARE Num_Hour_Records INTEGER;

SET counter = 0;
SELECT MAX(Node_Num) INTO NumOfNodes FROM Minutes;

loop1 : LOOP SET avg_usage = 0.0;
 SET counter = counter + 1;
 IF counter = (NumOfNodes + 1) THEN LEAVE loop1;
 ELSE SELECT AVG(x.Power_Usage), MAX(x.Record_Time) INTO avg_usage, max_time FROM(
  SELECT M.Power_Usage, M.Record_Time FROM Minutes M
  WHERE M.Node_Num = counter ORDER BY RID DESC LIMIT 60) x;
  INSERT INTO Hours(Node_Num, Record_Time, Power_Usage) VALUES (counter, max_time, avg_usage);
  DELETE FROM Minutes WHERE Node_Num = counter ORDER BY RID ASC LIMIT 60;
 END IF;
END LOOP loop1;

DROP INDEX Hours_Index ON Hours;
CREATE INDEX Hours_Index ON Hours(RID, Node_Num);
END// DELIMITER ;

Что я пробовал:

$mysql -u $_adminuser -h $_host -Bse "USE $_hostdb; $createProc;"

Где $ createProc - код для создания процедуры.

1 Ответ

3 голосов
/ 25 апреля 2011

С вашей процедурой, сохраненной в файле procedure.sql, попробуйте следующее. Он исключает оператор USE, указывая базу данных в командной строке:

$mysql --batch --silent -u $_adminuser -h $_host $_hostdb < procedure.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...