文档章节

mysql通过存储过程实现批量生成记录

阿信sxq
 阿信sxq
发布于 2016/02/16 17:07
字数 437
阅读 1.6K
收藏 6

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

        在开发中有一个这样的需求:需要在数据库的表中生成大量的记录,这些记录只有很少的差别,只会在创建表的时候进行一次这个操作。当然,要是人工一条一条的做也不是不可以,也可以用外部的程序来完成,但是这里我选择使用mysql的存储过程来实现。

0、相关版本信息

        mysql使用官方打包发布的5.6.29版本,安装在linux上

1、数据表结构

        表有一个自增的主键,另外有一个字段是需要保存的有少许差异的信息,另外有一个字段是其他信息,创建表的代码:

DROP TABLE IF EXISTS `t_vpn_ip`;
CREATE TABLE `t_vpn_ip` (
    `r_id`              int(16)         NOT NULL    AUTO_INCREMENT,
    `ipaddr`            varchar(16)     NOT NULL    UNIQUE,
    `cc_id`             int(16)         NOT NULL    DEFAULT 0,
    PRIMARY KEY (`r_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2、存储过程的创建、调用、删除

        存储过程中使用循环来生成大量的记录。由于这个生成操作只执行一次,所以在调用后就将其删除。

/**
 * 实现对VPN地值使用情况表的填充
 * 172.16.0.1--172.16.255.254
 */
DROP PROCEDURE IF EXISTS `vpn_addr_fill`;
DELIMITER ;;
CREATE PROCEDURE `vpn_addr_fill`()
BEGIN
    declare i int;
    declare j int;
    SET i=0;
    WHILE i<=255 DO
        SET j=1;
        WHILE j<255 DO
            INSERT INTO t_vpn_ip(ipaddr) VALUES(concat("172.16.",i,".",j));
            SET j = j + 1;
        END WHILE;
        SET i = i + 1;
    END WHILE;
END
;;
DELIMITER ;

/**
 * 填充数据
 */
call vpn_addr_fill();

/**
 * “功成身退”,删除存储过程
 */
DROP PROCEDURE IF EXISTS `vpn_addr_fill`;

3、说明

        这里生成的记录根据实际情况调整,调用存储过程后根据具体的情况决定是否需要删除存储过程。

© 著作权归作者所有

阿信sxq

阿信sxq

粉丝 232
博文 83
码字总数 73652
作品 1
成都
后端工程师
私信 提问
加载中

评论(0)

【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合

需求背景:有个,要求存储到mysql中;存储数据高峰能达到日均千万,瓶颈在于。 问题分析 思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择;但是,如果能在,未尝不...

太阳黑子
2016/10/28
218
0
MariaDB删除重复记录性能测试

删除重复记录,只保留id最大的一条记录的性能测试 环境 测试表的id为是唯一的,或是自增的主键。 mysql不能直接写循环,只能写在存储过程里。 存储过程uspbatchinsert的参数numcount为插入总...

osc_c4xow9p9
2018/06/13
1
0
MySQL高级知识(十)——批量插入数据脚本

前言:使用脚本进行大数据量的批量插入,对特定情况下测试数据集的建立非常有用。 0.准备 #1.创建tbdeptbigdata(部门表)。 create table tbdeptbigdata(id int unsigned primary key auto_...

osc_4edlv799
2018/06/26
1
0
为什么你的MySQL性能差?死代码牵连问题解决了吗?

MySQL存储过程、函数和触发器是开发人员常打交道的三大名词,但是,这三个过程可能会对数据库性能造成严重影响,尤其是函数中出现“死”代码时,其它两个过程都会受到牵连。以下是作者进行的...

DBAplus社群
2018/08/29
0
0
Oracle + Mybatis实现批量插入、更新和删除示例代码

前言 Mybatis是web工程开发中非常常用的数据持久化的框架,通过该框架,我们非常容易的进行数据库的增删改查。数据库连接进行事务提交的时候,需要耗费的资源比较多,如果需要插入更新的数据...

一看就喷亏的小猿
2018/11/22
568
0

没有更多内容

加载失败,请刷新页面

加载更多

总结:Spring boot熔断

一、介绍 1、熔断的目的:是为了保证服务高可用,不能因为系统中的一个小服务不可用,从而导致整个系统崩溃。 2、熔断的原理:对于使用相关注解的类或者方法,系统会监控其错误,如果多次出现...

浮躁的码农
27分钟前
16
0
抽象工厂

1. 介绍 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式,是工厂方法模式的升级版,在有多个业务品种、业务分类时,...

steven-黄笑笑
32分钟前
22
0
Autoruns显示windows系统所有启动项

如题,可以显示所有启动项,然后把不需要的启动项都取消勾选即可。而对于“服务”项,建议不要在里面去掉勾选,因为这样会禁止服务,容易出错。我通常都会打开电脑的”服务“,按启动类型排序...

ethanleellj
33分钟前
11
0
多线程基础学习

线程和进程有区别? 进程=加载上下文+执行程序+保存上下文 进程属于资源分配的最小单位,线程属于执行任务的最小单位。 线程6种状态: 1、New 尚未启动的线程的线程状态。 2、Runnable 可运行...

javazyw
今天
30
0
英文对“ Big O”符号的解释是什么? - What is a plain English explanation of “Big O” notation?

问题: 我希望尽可能少用正式的定义和简单的数学方法。 解决方案: 参考一: https://stackoom.com/question/22l0/英文对-Big-O-符号的解释是什么 参考二: https://oldbug.net/q/22l0/What...

javail
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部