MySQL存储过程 -- 通过游标遍历和异常处理迁移数据到历史表
-- 大表数据迁移,每天凌晨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;
-- 进行数据迁移
REPLACE INTO oal_xxx_history SELECT oal.*FROM oal_xxx oal WHERE oal.id=p_oalid ;
DELETE FROM oal_xxx WHERE id=p_oalid;
-- INSERT INTO t (tid) VALUES (p_tid);
COMMIT;
-- 读取下一行的数据
FETCH cur_oalid INTO p_oalid;
END WHILE;
CLOSE cur_oalid; -- 关闭游标
END$$
DELIMITER ;
MySQL存储过程 -- 通过游标遍历和异常处理迁移数据到历史表相关推荐
- mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...
-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx ...
- mysql存储过程表迁移for_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表 (转)...
-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表. DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_x ...
- mysql游标表间数据迁移_FalseMySQL存储过程--gt;通过游标遍历和异常处理迁移数据到历史表-mysql-第二电脑网...
-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ 电脑技术网对<FalseMySQL存储过程-->通过 ...
- Mysql定义DELETE操作触发器,将删除数据存入历史表
Mysql定义DELETE操作触发器,将删除数据存入历史表 SQL如下: // An highlighted blockDELIMITER $$ CREATE TRIGGER <触发器名称> ...
- mysql存储过程之游标遍历数据表
今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. ? 1 BEGIN 2 ...
- mysql存储过程和游标遍历
DELIMITER $$ CREATE PROCEDURE alarm_replay_insert_procedure() BEGIN-- 定义变量 DECLARE _nowTime DATETIME ...
- mysql 将三个月的数据导到历史表_迁移数据到历史表,减少业务表中数据压力 Mysql...
#数据迁移存储过程 DROP PROCEDURE IF EXISTS `delete_platform_patient`; DELIMITER ;; CREATE DEFINER=`root`@`%` ...
- 迁移数据到历史表SQL
有时工作需要需要把当前表的数据,移到历史表中,而历史表基本是以时间(年)为后缀来命名历史表的,如 A_2011,A_2012,在移数据时,要按数据的时间,移到不同的表中,且由于如果数据有同步.一次处理 ...
- MySQL存储过程中游标使用
在使用游标的时候,使用LOOP没有响应,后找到使用REPEAT实现,以下是代码: 建表语句 DROP table IF EXISTS test_table; create table test_tab ...
最新文章
- 用ASP.NET上传图片并生成带版权信息的缩略图
- VTK:vtkSeedWidget种子小部件用法实战
- GridCtrl学习笔记(2)寻找自动更新表格的最新数据并把其显示到当前窗口的方法...
- 检查图形是否为真彩色图形
- SLAM GMapping(6)扫描匹配器
- linux 延展集群如何设置,OCaml 4.11.0 发布,将函数式语言 Caml 在面向对象上进行延展...
- Python3 递归算法
- 阿里云2017财年:营收66.63亿 同比增长121%
- 【L298N 驱动电机的线路连接图】
- 五、 线性判别分析 LDA
- 在JavaScript中改变鼠标指针样式的方法
- 音频打不开 服务器运行失败,win7系统提示音频服务器未运行的解决方法
- 锚点是什么?锚点的使用
- 计算机怎么解除c盘用户权限,电脑c盘文件夹拒绝访问怎么办 删除c盘文件如何获得管理员权限...
- 618主场之变:谁是后疫情时代消费的主角?
- 【电气设计】理论知识学习(持续更新中...)
- document.documentElement对象
- 【QImage类常用函数】
- 交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)
- 计算机网络技术人工智能发展史,人工智能发展史