写点什么

MySQL 存储过程批量生成假用户电话号码

  • 2022 年 5 月 05 日
  • 本文字数:1379 字

    阅读完需:约 5 分钟


👨🏻‍🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟🌈擅长领域:Java、消息中间件、大数据、运维。

🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏。

🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!

缘由

在传统像 shell 编写的脚本之类的批量读写 MySQL 的时候效率较低,而存储过程在 MySQL 中是预编代码,存于 MySQL 之中内部执行,使用存储过程操作 MySQL 显然比外界脚本程序传送过去要高效很多。存储过程适应高质量大,复杂而且有规律的 MySQL 操作。

场景

现在有一张 ums_member 表存储着某个商城用户的 id、会员等级 id、用户名、密码、昵称、手机号码等等消息,现在商城需要进行整体高流量用户的并发测试,需要生成 5200 个模拟用户进行压力测试,其中最主要手机号码的生产需要注意。

实际操作

  • 面对这样一张表:

CREATE TABLE `sh` (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',  `level_id` bigint(20) DEFAULT NULL COMMENT '会员等级id',  `username` char(64) DEFAULT NULL COMMENT '用户名',  `password` varchar(64) DEFAULT NULL COMMENT '密码',  `nickname` varchar(64) DEFAULT NULL COMMENT '昵称',  `mobile` varchar(20) DEFAULT NULL COMMENT '手机号码',  `email` varchar(64) DEFAULT NULL COMMENT '邮箱',  `header` varchar(500) DEFAULT NULL COMMENT '头像',  `gender` tinyint(4) DEFAULT NULL COMMENT '性别',  `birth` date DEFAULT NULL COMMENT '生日',  `city` varchar(500) DEFAULT NULL COMMENT '所在城市',  `job` varchar(255) DEFAULT NULL COMMENT '职业',  `sign` varchar(255) DEFAULT NULL COMMENT '个性签名',  `source_type` tinyint(4) DEFAULT NULL COMMENT '用户来源',  `integration` int(11) DEFAULT NULL COMMENT '积分',  `growth` int(11) DEFAULT NULL COMMENT '成长值',  `status` tinyint(4) DEFAULT NULL COMMENT '启用状态',  `create_time` datetime DEFAULT NULL COMMENT '注册时间',  PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=5200 DEFAULT CHARSET=utf8mb4 COMMENT='会员'
复制代码
  • 我需要生成任意数量的假用户,很明显使用 Mysql 自带的存储过程是最方便的

  • 创建存储过程:

CREATE PROCEDURE `insert_ums_member`(IN n INT)BEGIN    DECLARE i INT DEFAULT 1;    DECLARE level INT DEFAULT 1;    DECLARE user_prefix varchar(255) DEFAULT '';		#固定用户密码    DECLARE user_passwd varchar(255) DEFAULT '$2a$10$6CLrbjXcDW7Z3NphKgen6e9ZOSrSZKqdUlrPmLHjc5/7O/M7CKnlm';    DECLARE user_phone varchar(255) DEFAULT '';    WHILE i < n DO        SET user_prefix = concat('user', i);				#生成手机号码        SET user_phone = CONCAT('1',CEILING(RAND()*9000000000+1000000000));        INSERT INTO `ums_member`(level_id, username, password, nickname, mobile)        VALUES (level,user_prefix,user_passwd,user_prefix,user_phone);        SET i = i + 1;    END WHILE;END;
复制代码
  • 删除存储过程

#删除存储过程DROP PROCEDURE `insert_ums_member`;
复制代码
  • 使用存储过程生产 5200 个用户

CALL insert_ums_member(5200);
复制代码


发布于: 刚刚阅读数: 2
用户头像

Java、消息中间件、大数据、运维 2022.04.23 加入

华为云云享专家、51CTOtop红人、CSDN博主、2021年第十届“中国软件杯”大学生软件设计大赛-B3-高并发条件下消息队列的设计与实现国赛二等奖、2021年浙江省职业院校技能大赛高职组“大数据技术与应用”赛项一等奖

评论

发布
暂无评论
MySQL存储过程批量生成假用户电话号码_MySQL_芝士味的椒盐_InfoQ写作社区