mysql存储过程3-1 实现每天定时从A表按天同步到B表(含建表,同步数据,删除旧数据)

这篇博客详细介绍了如何在MySQL中创建存储过程以实现每天定时从A表按天同步数据到B表,并在同步后删除A表的旧数据。首先,博主展示了创建目的表的存储过程和设置定时任务的步骤,然后讲解了定时同步存储过程的定义、调用及查看同步效果的方法,最后讨论了删除原始表旧数据的存储过程和设置定时任务的细节。
摘要由CSDN通过智能技术生成

一 创建要同步的目的表

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值