mysql生成20万条数据(连表插入)
创建一个存储过程
DELIMITER $$ -- 设置定界符为$$,与';'意思相同,防止相同符号产生冲突 USE `yunkc_base1`$$ -- 使用数据库 DROP PROCEDURE IF EXISTS `insert_test`$$ -- 如果存在insert_test存储过程名字,则删除 CREATE DEFINER=`ykcbase`@`%` PROCEDURE `insert_test`() -- 设置存储过程的权限
BEGIN -- 开始
DECLARE i INT; -- 定义一个i的int变量
SET i = 0; -- 设置i的值为0
SET @id = 3; -- 设置一个id变量,全局
START TRANSACTION; -- 开启事务
WHILE -- 循环
i < 200001 DO -- 当i的值小于200001的时候执行 do
INSERT INTO `base_s_t_charging_user` ( -- 插入语句
`user_account`,
`vehicle_org_id`,
`user_nick_name`,
`user_avatar`,
`user_phone`,
`user_district_id`,`is_ykc` )
VALUES
(
CONCAT('yh', @id := @id + 1), -- 用户自增 拼接'yh1'
163,
generateUserName (), -- 外部函数,用来生成用户名
'',
generatePhone (), -- 外部函数,用来生成手机号
119,1
);
INSERT INTO `base_d_t_charging_user_operation_info` (`user_id`, `user_card_no`,`multiple_charge`,`user_freeze_status`)
VALUES
(LAST_INSERT_ID(), generatePhone (),500102,600102); -- LAST_INSERT_ID(),mysql内部函数,获取上一条插入语句的值
SET i = i + 1; -- 执行完一次,i++,保证数据不重复
END WHILE; -- 结束循环
COMMIT; -- 事务一次性提交
END$$ -- 结束 DELIMITER ; -- 告诉mysql,$$ 定界符已经使用结束了,重新赋值为';'
生成姓名函数
DELIMITER $$ CREATE FUNCTION `yunkc_base1`.`generateUserName` () RETURNS varchar(255) CHARSET utf8 DETERMINISTIC -- 创建函数generateUserName() RETURNS 返回值类型为varchar(255),字符集utf8
BEGIN -- 开始
DECLARE xing VARCHAR (2056) DEFAULT '赵钱孙李周郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闽席季麻强贾路娄危江童颜郭梅盛林刁锺徐丘骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁'; -- 定义姓
DECLARE ming VARCHAR (2056) DEFAULT '嘉懿煜城懿轩烨伟苑博伟泽熠彤鸿煊博涛烨霖烨华煜祺智宸正豪昊然明杰诚立轩立辉峻熙弘文熠彤鸿煊烨霖哲瀚鑫鹏致远俊驰雨泽烨磊晟睿天佑文昊修洁黎昕远航旭尧鸿涛伟祺轩越泽浩宇瑾瑜皓轩擎苍擎宇志泽睿渊楷瑞轩弘文哲瀚雨泽鑫磊梦琪忆之桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊恨玉惜文香寒新柔语蓉海安夜蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰又菱碧彤元霜怜梦紫寒妙彤曼易南莲紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映易雪柳孤岚笑霜海云凝天沛珊寒云冰旋宛儿绿真盼儿晓霜碧凡夏菡曼香若烟半梦雅绿冰蓝灵槐平安书翠翠风香巧代云梦曼幼翠友巧听寒梦柏醉易访旋亦玉凌萱访卉怀亦笑蓝春翠靖柏夜蕾冰夏梦松书雪乐枫念薇靖雁寻春恨山从寒忆香觅波静曼凡旋以亦念露芷蕾千兰新波代真新蕾雁玉冷卉紫山千琴恨天傲芙盼山怀蝶冰兰山柏翠萱乐丹翠柔谷山之瑶冰露尔珍谷雪乐萱涵菡海莲傲蕾青槐冬儿易梦惜雪宛海之柔夏青亦瑶妙菡春竹修杰伟诚建辉晋鹏天磊绍辉泽洋明轩健柏煊昊强伟宸博超君浩子骞明辉鹏涛炎彬鹤轩越彬风华靖琪明诚高格光华国源宇晗昱涵润翰飞翰海昊乾浩博和安弘博鸿朗华奥华灿嘉慕坚秉建明金鑫锦程瑾瑜鹏经赋景同靖琪君昊俊明季同开济凯安康成乐语力勤良哲理群茂彦敏博明达朋义彭泽鹏举濮存溥心璞瑜浦泽奇邃祥荣轩'; -- 定义名
DECLARE I_xing INT DEFAULT LENGTH(xing) / 3; -- 定义姓的下标
DECLARE I_ming INT DEFAULT LENGTH(ming) / 3; -- 定义名的下标
DECLARE return_str VARCHAR (2056) DEFAULT ''; -- 定义默认的返回值
SET return_str = CONCAT(
return_str,
SUBSTRING(xing, FLOOR(1 + RAND() * I_xing), 1) -- 截取xing集合中的随机一个下标,取一位(字符下标从1开始)
);
SET return_str = CONCAT(
return_str,
SUBSTRING(ming, FLOOR(1 + RAND() * I_ming), 1)
);
IF RAND() > 0.400 -- 如果随机函数值大于0.4.则添加第3个名字
THEN SET return_str = CONCAT(
return_str,
SUBSTRING(ming, FLOOR(1 + RAND() * I_ming), 1)
);
END IF; -- 结束if语句
RETURN return_str; -- 返回执行结果
END $$ -- 结束 DELIMITER ; -- 重新定义定界符为';'
生成手机号函数
DELIMITER $$ CREATE FUNCTION `yunkc_base1`.`generatePhone` () RETURNS char(11) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE head VARCHAR (100) DEFAULT '000,156,136,176';
DECLARE content CHAR(10) DEFAULT '0123456789';
DECLARE phone CHAR(11) DEFAULT SUBSTRING(head, 1+ (FLOOR(1 + (RAND() * 3)) * 4), 3);
#SET phone = CONCAT(phone, substring('156,136,123,456,789', 1+(FLOOR(1 + (RAND() * 4))*4), 3));
DECLARE i INT DEFAULT 1;
DECLARE len INT DEFAULT LENGTH(content);
WHILE
i < 9 DO SET i = i + 1;
SET phone = CONCAT(
phone,
SUBSTRING(content, FLOOR(1 + RAND() * len), 1)
);
END WHILE;
RETURN phone;
END $$ DELIMITER ;
mysql生成20万条数据(连表插入)的更多相关文章
- 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录
从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负责的模块connector就派上了用场. ...
- Java 线程池 +生产者消费者+MySQL读取300 万条数据
1.1需求 数据库300 万条用户数据 ,遍历获取所有用户, 各种组合关联, 获取到一个新的json ,存到redis 上. 1.2 难点 数据库比较多, 不可能单线程查询所有的数据到内存. 1.3解 ...
- 十几万条数据的表中,基于帝国cms 。自己亲身体验三种批量更新数据的方法,每一种的速度是什么样的
需求是 上传Excel 读取里面的数据.根据Excel中某一个字段,与数据表中的一个字段的唯一性.然后把 Excel表中数据和数据库表中数据一次更改.本次测试一次更新31条数据. 本次测试基于帝国cm ...
- 用Python3生成30万条excel数据(xlsx格式)
在B/S架构的系统测试中,有时需要通过导入excel文件来生成一些数据记录,当数据量小的时候,一般不会出现什么问题,而当导入的数据量巨大时,对系统的性能就是一个考验了.为了验证系统的性能,有时需要导入 ...
- 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...
- C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
作者: Aicken(李鸣) 来源: 博客园 发布时间: 2010-09-08 15:00 阅读: 4520 次 推荐: 0 原文链接 [收藏] 摘要: ...
- 插入1000万条数据到mysql数据库表
转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...
- 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来
我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...
- 1000万条数据导入mysql
今天需要将一个含有1000万条数据的文本内容插入到数据库表中,最初自然想到的是使用Insertinto '表名'values(),(),()...这种插入方式,但是发现这种方式对1000万条数据量的情 ...
随机推荐
- H5与C3权威指南笔记--transition动画
translation:过渡 举个栗子:transition: width 1s linear; transition有三个属性,分别是transition-property, transition- ...
- MySQL中SELECT语句简单使用
最近开始复习mysql,查漏补缺吧. 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名.表名.列名这些标识符默认是区分大小写的:在之后的版本中默认不区分大小 ...
- vue框架入门和ES6介绍
vue框架入门和ES6介绍 vue-mvvm模式,vue是一种轻量级的前端框架,主要为模板渲染,数据同步,组件化,模块化,路由等. https://cn.vuejs.org/ 源码:https://g ...
- harris角点检测的简要总结
目录 1. 概述相关 2. 原理详解 1) 算法思想 2) 数学模型 3) 优化推导 3. 具体实现 1) 详细步骤 2) 最终实现 4. 参考文献 1. 概述相关 harris角点检测是一种特征提取 ...
- 微信小程序(基本知识点)
创建页面的两种方式: 1.通过创建文件夹的方式创建(.wxml/.wxss/.json/.js/) 2.在app.json的"pages": []中添加路径"pa ...
- java集合介绍(List,Set,Map)
前言 介绍java的常用集合+各个集合使用用例 欢迎转载,请注明作者和出处哦☺ 参考: 1,<Java核心编程技术(第二版)> 2, http://www.cnblogs.com/Litt ...
- c#面试题汇总(1)
c#面试题汇总 From: https://www.cnblogs.com/suzhiyong1988/p/5069385.html 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化 ...
- Delphi 项目配置选项
打开项目设置窗口: 通过菜单:项目>选项 快捷键 :Shift+Ctrl+F11 Delphi编译器选项说明 Conditional defines 指定条件编译器指令中引用的符号. O ...
- linux的自有(内置)服务
运行模式(运行级别) 在linux中存在一个进程,init(initialize初始化)进程号为1 ,该进程对应一个配置文件inittab 文件路径为/etc/inittab centOS6.5存在7 ...
- 51Nod 1004 n^n的末位数字
思路:首先将0~9的平方的尾数放在一个数组a里面,方便后面直接调用,因为不论多大的数做什么运算,得到的结果的最后一位数只和运算前所有数的最后一位数有关系.新建变量d,z一个是底数,一个是幂次.循环判断 ...