Mysql查询数据,并且分表再插入数据,储存过程源码解析

Mysql 查询数据,并且再分表插入数据

直接上代码:有用请支持一下:

drop procedure if exists insertt;
delimiter $$ 
create procedure insertt()
begin
	declare a int default 1000;
	declare flag int default 0;
	declare article_id int(10);
	declare s_list cursor for SELECT `id` as "article_id" FROM `div_article` ORDER BY `id` ASC LIMIT 0,1; 
	declare continue handler for not found set flag=1;
	open s_list;
		 fetch s_list into article_id;
		 while flag <> 1 do
				set @tid = article_id%1000;
				set @tname = CONCAT('`div_test',@tid,'`');
				set @article_id = article_id;
				set @title = (SELECT title FROM `div_article` WHERE id = @article_id) ;
				
				set @sqlStr= CONCAT('INSERT INTO ',@tname,'(`id`,`title`)  VALUES (',@article_id,', "',@title,'")');
				PREPARE stmt from @sqlStr;
				EXECUTE stmt;
				
				fetch s_list into article_id;
			end while;
	close s_list;
end$$
delimiter;
call insertt();

示例二

以下是一个MySQL存储过程的示例,该存储过程查询数据并将其分表插入到其他表中:、

DELIMITER //
CREATE PROCEDURE insert_data_to_partition()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE employee_name VARCHAR(255);
    DECLARE employee_age INT;
    DECLARE cur CURSOR FOR SELECT name, age FROM employees;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN cur;
    read_loop: LOOP
        FETCH cur INTO employee_name, employee_age;
        
        IF done THEN
            LEAVE read_loop;
        END IF;
        -- 根据年龄范围选择要插入的目标表
        IF employee_age < 25 THEN
            INSERT INTO employees_25 (name, age) VALUES (employee_name, employee_age);
        ELSEIF employee_age >= 25 AND employee_age < 40 THEN
            INSERT INTO employees_40 (name, age) VALUES (employee_name, employee_age);
        ELSE
            INSERT INTO employees_40plus (name, age) VALUES (employee_name, employee_age);
        END IF;
    END LOOP;
    CLOSE cur;
END //
DELIMITER ;

这个示例存储过程首先声明了一些变量用于迭代查询结果集,并设置了一个游标(`cur`)来执行查询操作。然后,使用`OPEN`语句打开游标,准备从`employees`表中检索数据。

`FETCH`语句在每次循环迭代中获取下一行数据,并将它们存储到声明的变量中(`employee_name`和`employee_age`)。如果没有更多的数据可获取,则设置`done`变量为`TRUE`并跳出循环。

根据员工的年龄范围,使用条件语句选择要插入数据的目标表。根据示例,将年龄小于25岁的员工插入到`employees_25`表中,将年龄在25到40岁之间的员工插入到`employees_40`表中,将年龄大于等于40岁的员工插入到`employees_40plus`表中。

最后,关闭游标并结束存储过程定义。

要执行这个存储过程,您可以使用以下SQL语句:

CALL insert_data_to_partition();

请注意,这只是一个示例存储过程,您可能需要根据自己的实际需求进行适当的修改和调整。


文章来源地址https://www.toymoban.com/diary/sql/220.html

到此这篇关于Mysql查询数据,并且分表再插入数据,储存过程源码解析的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/sql/220.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
未经允许不得转载:Toy模板网 » Mysql查询数据,并且分表再插入数据,储存过程源码解析
上一篇 2023年08月19日 16:45
下一篇 2023年08月19日 16:45

相关文章

  • 【Python笔记】Python + xlrd + pymysql读取excel文件数据并且将数据插入到MySQL数据库里面

    这篇文章,主要介绍Python + xlrd + pymysql读取excel文件数据并且将数据插入到MySQL数据库里面。 目录 一、Python读取excel 1.1、安装xlrd库 1.2、打开excel工作簿 1.3、获取sheet工作表 1.4、操作row数据行 1.5、操作column数据列 1.6、操作单元格 二、读取excel数据保存到MySQL 2.1、完整代码 2.

    2024年02月15日
    浏览(59)
  • 【MySQL进阶之路丨第八篇】MySQL数据的插入及查询

    在上一篇中我们介绍了数据表的创建和删除;在开发中,了解数据库中数据的运行方式、运行逻辑是十分重要的。 这一篇我们使用命令行方式来帮助读者掌握MySQL数据的插入及查询。 上一篇链接: MySQL | 数据表的创建与删除 在MySQL数据库中,使用 INSERT INTO 语句来插入数据。

    2024年02月08日
    浏览(50)
  • Jmeter调用Oracle、pg、MySql 储存过程,实例,获取返回值

    JDBC Request: 1、重要参数说明: Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致 Query:填写的sql语句未尾不要加“;” Parameter valus:参数值 Parameter types:参数类型,可参考:Javadoc for java.sql.Types Variable names:保存sql语句返回结果

    2024年02月08日
    浏览(53)
  • 关于Android Studio连接mysql数据库的过程和注册功能的实现(数据的插入)以及mysql环境变量的配置

    1.安装mysql数据库,安装的教程哔站有很多,版本尽量用mysql5.7的版本,用mysql8.0的版本与android studio进行连接的话可能会出现问题。 2.安装完成之后,给本机配置环境变量,步骤:如下图示 (1)通过搜索打开环境变量。 (2).点击环境变量。 (3).找到系统变量点击新建。

    2024年04月14日
    浏览(66)
  • SQL 50 题(MySQL 版,包括建库建表、插入数据等完整过程,适合复习 SQL 知识点)

    ① 本文整理了经典的 50 道 SQL 题目,文本分为 建库建表 、 插入数据 以及 SQL 50 题 这三个部分。 ② 这些题目许多博主也整理过,但本人不太了解这些题目具体的出处。第一次了解这些题目是本科期间老师出的题目。如果有网友知道这些题目的最原始出处,可以在评论评论区

    2024年02月07日
    浏览(41)
  • pycharm连接MySql数据库,新建表creat table、删除表drop table、查询表select、插入数据insert

    亲爱的小伙伴,欢迎你来为学习新的知识啦~~~ 一、安装pymysql 首先我们肯定要先在python中把能操作mySql的第三方数据库安装一下呀~ 安装方式:pip安装(你有没有安装好pip呀,可以看安装pip的相关文章进行安装好哦~) 打开我们电脑的终端,然后输入以下的命令,将我们

    2024年02月09日
    浏览(51)
  • 【Mysql】X-DOC:Mysql数据库大量数据查询加速(定时JOB和存储过程应用案例)

    在某中台系统中,设计了大量的基础数据(维度数据、维度映射关系等)来支撑业务功能,业务表中存在大量的维度外键关联字段,其优点是可以实现前端的选择录入,数据校验,确保录入数据的准确性;缺点是在做业务报表时,需要做大量的维度关联(join)操作。 受限于

    2024年02月12日
    浏览(44)
  • MySQL数据库分库分表备份

    分库备份 创建脚本并编写 [root@localhost scripts]# vim bak_db_v1.sh #!/bin/bash 备份的路径 bak_path=/backup/db 账号密码 mysql_cmd=\\\'-uroot -pRedHat@123\\\' 需要排除的数据库 exclude_db=\\\'information_schema|mysql|performance_schema|sys\\\' 检验备份路径是否存在,不存在则创建 [ -d ${bak_path} ] || mkdir -p ${bak_path} 提取需要

    2024年02月14日
    浏览(46)
  • 掌握MySQL分库分表(一)数据库性能优化思路、分库分表优缺点

    不能⼀上来就说分库分表! 根据实际情况分析,两个角度思考:不分库分表、分库分表 软优化 数据库参数调优 分析慢查询SQL语句,分析执行计划,进行sql改写和程序改写 优化数据库索引结构 优化数据表结构优化 引入NOSQL和程序架构调整 硬优化 提升系统硬件(更快的IO、更

    2023年04月19日
    浏览(59)
  • 记录线上一次mysql只能查询,不能插入或更新的bug

    错误复现 突然有一天产品通知xx服务不可用,想着最近也没有服务更新,就先排查一下服务日志 使用postman测试的时候请求明显超时,查看日志显示是一个锁的问题 使用工具连接到mysql,查看information_schema.INNODB_TRX,发现有一个事务处于Running的状态,查看id后不能删除。 查看

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包