Как запланировать запрос MySQL?
Можно ли планировать запуск задачи в заданный интервал в MySQL?
У меня есть база данных MySQL инвентаризации. Структура выглядит следующим образом:
table_1 fields: itmcode, avgcost
table_2 fields: itmcode(FK to table_1(itmcode)), quantity
Основой отчета является то, когда я хочу, чтобы данные инвентаризации инвентаризации были мудрыми для прошлой даты.
Поля avgcost
и quantity
изменяются, когда новая покупка отправляется в систему. Я могу запустить запрос, чтобы посмотреть текущую оценку акций, но я хочу, чтобы увидеть оценку акций на предыдущую дату. Как мне это сделать? Для количества я могу добавить продажи и вычесть покупки назад с текущей даты до любой даты, требуемой от отчета, но avgcost является текущим, так как он обновляется каждый раз при покупке.
Мне было интересно, может ли быть выполнен автоматический ежедневный дамп, подобный этому:
SELECT itmcode, quantity, avgcost, (avgcost * quantity) as ttlval
FROM table_1
JOIN table_2 ON table_1.itmcode = table_2.itmcode
Можно ли планировать эту задачу непосредственно в MySQL или есть какое-то другое решение?
Ответы
Ответ 1
у вас есть 2 основных варианта (по крайней мере):
1, посмотрите Планировщик событий
Сначала создайте таблицу, например. stock_dumps с полями
itemcode, количество, avgcost, ttlval, dump_date (DATETIME)
CREATE EVENT `Dumping_event` ON SCHEDULE
EVERY 1 DAY
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ''
DO BEGIN
INSERT INTO stock_dumps(itemcode, quantity, avgcost, ttlval,dump_date)
SELECT itmcode, quantity, avgcost, (avgcost * quantity)as ttlval, NOW()
FROM table_1 JOIN table_2 ON table_1.itmcode = table_2.itmcode;
END
Пожалуйста, следуйте инструкциям, как включить планировщик в ссылку, опубликованную выше.
Примечание. В старых версиях mysql нет планировщика событий
2, Запланируйте задание задания на работу cron:
создать файл sql:
INSERT INTO stock_dumps(itemcode, quantity, avgcost, ttlval,dump_date)
SELECT itmcode, quantity, avgcost, (avgcost * quantity)as ttlval, NOW()
FROM table_1 JOIN table_2 ON table_1.itmcode = table_2.itmcode;
расписать эту команду:
mysql -uusername -ppassword < /path/to/sql_file.sql
Ответ 2
Существуют общие инструменты, такие как EyeShare или AutoSQL.net, чтобы сделать это. EyeShare - это более общий инструмент автоматизации ИТ-процессов, и AutoSQL - это единый инструмент, специально предназначенный для планирования запросов и вывода их (в Excel или CSV).