-- 대형 테이블 데이터 마이그레이션,매일 아침1클릭5클릭하여 실행, 실행 간격은 10분, 오래된 데이터를 히스토리 테이블로 마이그레이션합니다.
DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx`$$ CREATE PROCEDURE `pro_xx`() BEGIN DECLARE p_oalid INT DEFAULT 0; DECLARE STOP INT DEFAULT 0; DECLARE cur_oalid CURSOR FOR SELECToal.id FROM oal_xxx oal WHERE oal.`ymd` <CONCAT(YEAR(DATE_ADD(NOW(),INTERVAL -1 MONTH)),'-',MONTH(DATE_ADD(NOW(),INTERVAL -1 MONTH )),'-', DAY(DATE_ADD(NOW(),INTERVAL-1 MONTH ))) LIMIT 1000; DECLARE EXIT HANDLER FOR SQLSTATE '02000' /**包含游标not found*/ BEGIN SET STOP=1; INSERTINTO db_logs(log_type,table_name,action_name,log_msg,create_time) SELECT1, 'oal_xxx','pro_oal_log_move',CONCAT('primary key:',p_oalid,' 游标执行正常结束!'),NOW(); END; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SETSTOP=1; INSERTINTO db_logs(log_type,table_name,action_name,log_msg,create_time) SELECT2, 'oal_xxx','pro_oal_log_move',CONCAT('primary key:',p_oalid,' 移动执行失败'),NOW(); END; OPEN cur_oalid;
-- 변수에 데이터 한 줄 읽어오기
FETCH cur_oalid INTO p_oalid;
-- 커서가 끝에 도달했는지 확인하는 것입니다.
WHILE STOP <> 1 DO -- select p_id; START TRANSACTION;
-- 데이터 마이그레이션 수행
안됨위 MySQL 저장 프로시저 --> 데이터 마이그레이션의 내용입니다. 커서 탐색 및 예외 처리를 통해 히스토리 테이블에 추가 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!