一 创建要同步的目的表
1.创建存储过程:
drop PROCEDURE if EXISTS p_create_table;
CREATE PROCEDURE p_create_table (
IN pa_table_name VARCHAR (30) # 表名
)
BEGIN
DECLARE n int(10);
set @currMonth=MONTH(CURDATE());
set @a=@currMonth;
if @a=1 or @a=2 or @a=3 then set n=123;
elseif @a=4 or @a=5 or @a=6 then set n=456;
elseif @a=7 or @a=8 or @a=9 then set n=789;
else set n=101112;
end if;
set @tName=concat(pa_table_name,'_',n); # 利用concat拼接字符串函数,将复制表的sql赋值到变量sql_create_table
select @tName;
# 利用concat拼接字符串函数,将复制表的sql赋值到变量sql_create_table
set @sql_create_table = concat('CREATE TABLE ',@tName,' like ','iip_acc_warn_information');
# 预处理建表
PREPARE sql_create_table FROM @sql_create_table;
# 执行sql
EXECUTE sql_create_table;
END
2.调用存储过程:
call p_create_table('iip_acc_warn_information');
3.设置定时任务
show variables like '%event_sche%'
1.临时会话的修改,注意mysql服务重新启动将失效
set global event_scheduler=1
设置定时任务执行:
DROP EVENT IF EXISTS p_create_table_event;
create event p_create_table_event
ON SCHEDULE EVERY 1 DAY STARTS '2019-10-11 01:00:00'
ON COMPLETION PRESERVE
DO
begin
call p_create_table('iip_acc_warn_information');
commit;
end
二 定时按天同步的存储过程
2.1 定义存储过程
drop PROCEDURE if EXISTS p_sync_data;
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_sync_data`(
IN before_interval_n int ,
out result_msg varchar(255),
out total INT(10)
)
BEGIN
declare id_t varchar(255);
declare created_time_t datetime;
declare del_flag_t int(11);
declare display_name_t varchar(255);
declare instance_id_t varchar(255);
declare last_modified_time_t TIMESTAMP;
declare tenant_id_t varchar(255);
declare version_t int(1