mysql存储过程 使用游标实现两张表数据同步数据
2023-09-27 14:22:13 时间
一 存储过程中的游标
1.1 游标的功能概述
游标就是类似java中集合遍历的迭代器,MySQL中的游标只能用在存储过程和函数中,在存储过程和函数中可以使用游标对结果集进行循环的处理,可以遍历返回的多行结果,每次拿到一整行数据。
1.2 游标的语法使用
1.创建游标
DECLARE 游标名称 CURSOR FOR 查询sql语句; 如
declare stu_data_List cursor for select * from tb_stu where create_time>='2022-07-27 10:00:00';
2.打开游标
OPEN 游标名称; 如 open stu_data_List;
3.遍历使用游标获取数据
FETCH 游标名称 INTO 变量名1,变量名2,...; 如 fetch stu_data_List into id,u_name,u_age,create_date;
4.关闭游标
CLOSE 游标名称; 如 close stu_data_List;
二 实操案例
2.1 定义一张表以及铺底一些数据
CREATE TABLE `tb_stu` (
`id` int(10) NOT NULL COMMENT '用户id',
`u_name` varchar(255) DEFAULT NULL COMMENT '用户名',
`u_age` int(10) DEFAULT NULL COMMENT '年龄',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
新增一些数据
3.编写存储过程:实现从tb_stu查询指定日期范围的数据迁移到tb_stu2 这张表中
drop PROCEDURE IF EXISTS p_sync_stu;
CREATE PROCEDURE p_sync_stu()
begin
-- 需要定义接收游标数据的变量
declare id int(10);
declare u_name varchar(255);
declare u_age int(10);
declare create_date TIMESTAMP;
declare flag int default 0; -- 定义标记变量
-- 创建游标,查询学生信息数据
declare stu_data_List cursor for select * from tb_stu where create_time>='2022-07-27 10:00:00';
-- 游标结束后,将标记量改为1
declare exit handler for not found set flag=1;
-- 开启游标
open stu_data_List;
-- 循环遍历游标
repeat
-- 使用游标,遍历结果数据
fetch stu_data_List into id,u_name,u_age,create_date;
-- 将数据保存到表中
insert into tb_stu2 values(id,u_name,u_age,create_date);
until flag=1
end repeat;
-- 关闭游标
close stu_data_List;
end
执行
call p_sync_stu();
效果:
相关文章
- solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)
- 解决 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working
- MySQL FUNCTION 整理
- php mysql
- MySQL & NoSQL – Memcached 插件
- MySQL第九讲 MySQL集群主从搭建指定数据库同步数据
- MySQL数据直接实时同步到ES
- Mysql的存储引擎和索引
- 对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解 (转)
- 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
- Mysql高可用架构(主从同步)
- 《PHP和MySQL Web开发从新手到高手(第5版)》一一2.4 创建数据库
- 数据库MySQL 5.6.45的安装
- MySQL集群结构说明
- mysql 同步机制概念
- 转 mysql front安装与使用教程 mysql 工具
- centos7 卸载mysql
- 安装MySQL-python
- 通过MySQL自动同步刷新Redis
- 基于mysql主从同步的proxy读写分离
- Mysql中的函数
- MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!
- mysql半同步复制实现
- MySQL 同一台服务器同步数据
- MySQL 5.7双主同步部分表
- 【数据库】MySQL概念知识语法-基础(DDL/DML),真的很详细,一篇文章你就会了
- centos 5.4中mysql主从同步配置方法
- mysql-数据库的主从同步,实现读写分离
- docker MySQL数据库的备份与还原,以及每天定时自动备份
- MySQL学习 [第三天]——数据类型 Ⅰ
- kettle根据时间戳增量的将数据从MySQL同步SQLServer(linux部署脚本启动作业、config.properties 配置数据库)
- Ambari组件状态从MySQL同步到SQLServer或者MySQL