IT

MySQL 쿼리를 예약하는 방법은?

itgroup 2023. 9. 20. 20:17
반응형

MySQL 쿼리를 예약하는 방법은?

MySQL에서 지정된 간격으로 작업을 실행하도록 예약할 수 있습니까?

인벤토리 MySQL 데이터베이스가 있습니다.구조는 다음과 같습니다.

table_1            fields: itmcode, avgcost
table_2            fields: itmcode(FK to table_1(itmcode)), quantity

보고서의 기본은 지난 날짜의 재고 평가 내역 항목을 현명하게 처리하고 싶을 때입니다.

avgcost그리고.quantity필드는 새 구매가 시스템에 게시될 때 변경됩니다.현재 주식 평가를 확인하기 위해 쿼리를 실행할 수 있지만 이전 날짜의 주식 평가도 확인하고 싶습니다.그걸 어떻게 하는 거죠?수량에 대해서는 매출액을 합산하고 보고서가 요구하는 날짜까지 현재 날짜에서 차감할 수 있지만, 구매가 게시될 때마다 업데이트되기 때문에 평균 비용은 현재입니다.

나는 이것과 비슷한 자동 일일 덤프를 실행할 수 있는지 궁금했습니다.

SELECT itmcode, quantity, avgcost, (avgcost * quantity) as ttlval
FROM table_1 
JOIN table_2 ON table_1.itmcode = table_2.itmcode

이 작업을 MySQL에서 직접 예약할 수 있습니까? 아니면 다른 해결책이 있습니까?

두 가지 기본 옵션(최소)이 있습니다.

1, 이벤트 스케줄러 보기

먼저 필드가 있는 stock_dump와 같은 테이블을 만듭니다.

품명코드, 수량, 평균비용, 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

이를 위해 EyeShare AutoSQL.net 같은 일반적인 도구를 사용할 수 있습니다.EyeShare는 보다 일반적인 IT 프로세스 자동화 도구이며 AutoSQL은 쿼리를 예약하고 이를 Excel 또는 CSV로 출력하기 위한 단일 용도 도구입니다.

언급URL : https://stackoverflow.com/questions/9621355/how-to-schedule-a-mysql-query

반응형