Подтвердить что ты не робот

Как запланировать запрос 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 или есть какое-то другое решение?

4b9b3361

Ответ 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).