• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

在开发中有一个这样的需求:需要在数据库的表中生成大量的记录,这些记录只有很少的差别,只会在创建表的时候进行一次这个操作。当然,要是人工一条一条的做也不是不可以,也可以用外部的程序来完成,但是这里我选择使用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、说明

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
linux系统安装字体详细介绍发布时间:2022-02-11
下一篇:
查看linux中某个端口(port)是否被占用的方法发布时间:2022-02-11
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap