前言

在MySQL很多测试场景,需要人工生成一些测试数据来测试。本文提供一个构造MySQL大表存储过程,可以生成包含用户名,手机号码,出生日期等字段。也可以通过滤重来使得手机号码不重复,模拟现实场景。

一、生成脚本

生成说明:

以下使用存储过程批量生成包含用户名,手机号,出生日期等字段大表。

该存储过程使用基于uid作为主键,因此会生成少量重复手机号码,后面有滤重SQL脚本。

如果想一次性生成不重复手机号码,可以考虑修改以下脚本,去掉uid,基于mobile列作为主键

DROP TABLE IF EXISTS big_table;

DROP PROCEDURE IF EXISTS prc_gen_user;

CREATE TABLE `big_table` (

`uid` int(11) NOT NULL AUTO_INCREMENT,

`mobile` char(11) DEFAULT NULL,

`passwd` varchar(50) DEFAULT NULL,

`name` varchar(50) DEFAULT NULL,

`sex` tinyint DEFAULT NULL,

`birthday` datetime DEFAULT NULL,

`updated_time` datetime DEFAULT NULL,

PRIMARY KEY (`uid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE PROCEDURE prc_gen_user(l_cnt int)

BEGIN

DECLARE x INT DEFAULT 0;

DECLARE p char(11);

WHILE x < l_cnt

DO

SET x = x + 1;

SET p =

concat('1',

substring(cast(3 + (rand() * 10) % 7 AS char(50)), 1, 1),

right(left(trim(cast(rand() AS char(50))), 11), 9));

INSERT INTO big_table(mobile,

passwd,

name,

sex,

birthday,

updated_time)

VALUES (

p,

md5(ceiling(rand() * 1000000)),

concat(

substring(

'赵钱孙李周吴郑王冯陈诸卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金

魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任

袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮齐康

伍余元卜顾孟平黄和穆萧尹姚邵堪汪祁毛禹狄米贝明臧计伏成戴谈

宋茅庞熊纪舒屈项祝董粱杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛

林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯咎管卢莫经房裘干解应宗

丁宣贲邓郁单杭洪包诸左石崔吉钮龚',

floor(1 + 190 * rand()),

1),

substring(

'明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中

正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜

敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山

贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传

康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵

源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和

恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连

勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁

裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤

延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝

宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦

先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦

晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅

玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',

floor(1 + 400 * rand()),

1),

substring(

'明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中

正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜

敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山

贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传

康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵

源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和

恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连

勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁

裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤

延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝

宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦

先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦

晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅

玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',

floor(1 + 400 * rand()),

1)),

ceiling(rand() * 10) % 2,

date(

now()

- INTERVAL (20 + ceiling(rand() * 100) % 40) YEAR),

concat('2018-',

1 + ceiling(rand() * 100) % 12,

'-',

1 + ceiling(rand() * 100) % 28))

ON DUPLICATE KEY UPDATE updated_time = now();

END WHILE;

END

二、数据填充

call prc_gen_user(1000);

Query OK, 1 row affected (1.38 sec)

select count(*) from big_table;

+----------+

| count(*) |

+----------+

| 1000 |

+----------+

1 row in set (0.00 sec)

select 'Leshami' author,'http://blog.csdn.net/leshami' Blog;

+---------+------------------------------+

| author | Blog |

+---------+------------------------------+

| Leshami | http://blog.csdn.net/leshami |

+---------+------------------------------+

三、滤重SQL语句

DELETE FROM big_table

WHERE mobile IN (SELECT mobile

FROM (SELECT u1.mobile

FROM big_table u1

GROUP BY u1.mobile

HAVING count(*) > 1) a)

AND uid NOT IN (SELECT uid

FROM (SELECT min(u2.uid) AS uid

FROM big_table u2

GROUP BY u2.mobile

HAVING count(*) > 1) b);

四、其它

本文参考了以下代码,下面代码实现是MySQL批量造用户数据,姓名/手机号/生日/密码

DROP PROCEDURE IF EXISTS batchGenerateUsers;

DELIMITER $$

CREATE PROCEDURE batchGenerateUsers()

BEGIN

DECLARE x INT Default 0;

DECLARE p char(11);

WHILE x < 10000 DO

SET x=x+1;

SET p=concat('1', cast(3+(rand()*10)%7 as char(1)), right(left(trim(cast(rand() as char (20))), 11),9));

insert into my_users(mobile, passwd, name, sex, birthday, updated_time)

values(p,

md5(ceiling(rand()*1000000)),

concat(substring('赵钱孙李周吴郑王冯陈诸卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮齐康伍余元卜顾孟平黄和穆萧尹姚邵堪汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董粱杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯咎管卢莫经房裘干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚',floor(1+190*rand()),1),substring('明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',floor(1+400*rand()),1),substring('明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',floor(1+400*rand()),1)),

ceiling(rand()*10)%2,

date(now()-interval (20+ceiling(rand()*100)%40) year),

concat('2015-', 1+ceiling(rand()*100)%12,'-',1+ceiling(rand()*100)%28))

ON DUPLICATE KEY UPDATE

updated_time=now();

END WHILE;

END $$

#call batchGenerateUsers();

并对其进行适当修改。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

mysql 全局不重复_如何批量生成MySQL不重复手机号大表实例代码相关推荐

  1. mysql手机号码不重复吗_如何批量生成MySQL不重复手机号大表实例代码

    前言 在MySQL很多测试场景,需要人工生成一些测试数据来测试.本文提供一个构造MySQL大表存储过程,可以生成包含用户名,手机号码,出生日期等字段.也可以通过滤重来使得手机号码不重复,模拟现实场景. ...

  2. mysql手机号码不重复_如何批量生成MySQL不重复手机号大表实例代码

    前言 在MySQL很多测试场景,需要人工生成一些测试数据来测试.本文提供一个构造MySQL大表存储过程,可以生成包含用户名,手机号码,出生日期等字段.也可以通过滤重来使得手机号码不重复,模拟现实场景. ...

  3. mysql循环更新数据_大批量更新数据mysql批量更新的四种方法

    mysql 批量更新如果一条条去更新效率是相当的慢, 循环一条一条的更新记录,一条记录update一次,这样性能很差,也很容易造成阻塞. mysql 批量更新共有以下四种办法 1..replace i ...

  4. 自定义边界_如何批量生成CAD填充的边界?

    下面是本公众号文章分类目录,点击标题文字可打开分类文章列表: 安装卸载 异常.退出 文件及输入输出  基本操作技巧 设置及相关问题  界面和显示 快捷键 视图设置和调整  图层管理 颜色   线型   ...

  5. 用concat批量生成MySQL查询语句

    需求背景: 一个库有2个用户,比如gsgz和gxsnerp. gsgz的用户有这个库的所有权限,而gxsnerp这个用户只有部分表的权限,所以不能直接用grant all on ...这个语句来给权限 ...

  6. mysql connection是什么_记一次MySQL出现too many connection

    今天中午的时候突然接到报警,MySQL连接数暴增..本来设置的max_conntion=6000, 这个数值连接已经够用.接到报警速度连接服务器连接mysql总是报如下错误: [mysql@local ...

  7. mysql主从增量同步_生产环境中mysql主从同步/完整/增量备份

    环境:某项目的DB19数据库服务器,无从库也无开过binlog日志,负载有时比较高但基本运行稳定.备份情况:本地每天完整备份保留一周再rsync到异地备份机保留一月,由于数据量的增长加上每天晚上rsy ...

  8. mysql分片做主从_使用mycat部署mysql集群(分片,读写分离,主从复制)

    在s201,s202,s203上安装MySQL (安装jdk) 配置MySQL 5.7的yum源 sudo tee -a /etc/yum.repos.d/mysql-community.repo & ...

  9. mysql分库负载均衡_订单模块以及负载均衡和分库分表

    第202次(订单模块以及负载均衡和分库分表) 学习主题:订单模块以及负载均衡和分库分表 1. ego-rpc_ego-manager项目发布 (1) 描述ego-rpc项目发布需要什么插件,做哪些配置 ...

最新文章

  1. 连续发表三篇核酸研究数据库文章
  2. 修改WampServer的默认端口
  3. Android开发文章推荐
  4. php 网格,PHP中的数据网格
  5. 【动态规划】方格取数 (ssl 1010)
  6. 基础线性规划实现---python
  7. 基于Android平台淘宝网手机客户端实战开发(共四季,涉及各类技术应用)
  8. 数据库笔记01:SQL Server系统概述
  9. php毛玻璃,毛玻璃的性质及功能特点
  10. 【解决】Oracle服务器ip地址被占用
  11. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_11_练习:集合元素处理(Stream方式)...
  12. android tv 蓝牙服务_Android TV Remote Service
  13. 109-gamp与rtklib精度对比
  14. 浏览器的标签栏上网站的小图标的设置方式
  15. ZOJ - 3880 Demacia of the Ancients
  16. 为什么要报考系统架构设计师考试
  17. 将unity地形转换为mesh
  18. Intel NUC8i5BEH安装Windows10+Hackintosh双系统
  19. 26.gateway的IP 认证拦截,gateway做token验证 流程图(springcloud)
  20. 劲乐团u显示服务器维护,[综合]《劲乐团U》新版上线 5月3日华丽转身

热门文章

  1. 病态!------沉沦的病态
  2. 项目奖金要不要与合同额直接相关?
  3. 矩阵分析与应用(一)——矩阵基础知识、广义逆
  4. 煤炭行业转型箭在弦上,云+AI推进两化深度融合
  5. linux监控硬件温度(CPU和GPU等)
  6. MySQL 数据库--存储引擎
  7. 关于app store distribution出现的'armv7'与最小版本'3.0'不兼容的问题
  8. PostGIS查询指定范围的数据
  9. 三星EMMC选型常识
  10. Linux下无法识别Intel Dual Band Wireless-AC 3165模块