文档章节

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

阿信sxq
 阿信sxq
发布于 2016/02/16 17:07
字数 437
阅读 704
收藏 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

粉丝 225
博文 82
码字总数 72407
作品 1
成都
后端工程师
私信 提问
【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合

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

太阳黑子
2016/10/28
72
0
Oracle + Mybatis实现批量插入、更新和删除示例代码

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

一看就喷亏的小猿
11/22
0
0
为什么你的MySQL性能差?死代码牵连问题解决了吗?

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

DBAplus社群
08/29
0
0
消息群发,关于站内消息群发设计思路请教,欢迎拍砖

请教大家一个问题,比如我要发群组消息,不同的层级的用户发送的消息内容不一样,请问该怎样实现? 下面这种想法有什么问题? 1.消息内容单条记录 2.查询该等级的用户,然后循环插入用户和消...

streamlong
2016/04/27
75
0
mysql批量插入500条数据

表格结构如下 需求name和password字段,生成如下格式: 总共批量生成500个。 解决思路: 可以用mysql 存储过程 如果linux环境下可以用shell 我们先测试第一种,用存储过程。 DELIMITER ;; #...

am2012
2017/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
43分钟前
4
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
47分钟前
237
5
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
5
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部