利用存储过程插入50W+数据
转自:https://www.aliyun.com/jiaocheng/1396184.html
首先,建立部门表和员工表:
部门表:
- create table dept(
- id int unsigned primary key auto_increment,
- deptno mediumint unsigned not null default 0,
- dname varchar(20) not null default "",
- loc varchar(13) not null default ""
- )ENGINE=INNODB DEFAULT CHARSET=GBK
员工表:
- create table emp(
- id int unsigned primary key auto_increment,
- empno mediumint unsigned not null default 0,
- ename varchar(20) not null default "",
- job varchar(9) not null default "",
- mgr mediumint unsigned not null default 0,
- hiredate date not null,
- sal decimal(7,2) not null,
- comm decimal(7,2) not null,
- deptno mediumint unsigned not null default 0
- )ENGINE=INNODB DEFAULT CHARSET=GBK
开启二进制日志:
通过
show variables like 'log_bin_trust_function_creators'
可以看到默认的二进制日志时关闭的
- Variable_name |Value |
- --------------------------------|------|
- log_bin_trust_function_creators |OFF |
通过下面的命令进行设置:
set global log_bin_trust_function_creators=1
- Variable_name |Value |
- --------------------------------|------|
- log_bin_trust_function_creators |ON |
1.创建一个生成随机字符串的函数:
- DELIMITER $$
- create FUNCTION rand_string(n int) returns varchar(255)
- BEGIN
- declare chars_str varchar(100) default 'abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
- declare return_str varchar(255) default '';
- declare i int default 0;
- while i<n DO
- set return_str=CONCAT(return_str,substring(chars_str,floor(1+rand()*52),1));
- set i=i+1;
- end while;
- return return_str;
- END $$
通过DELIMITER定义mysql语句的结束符,因为函数中多处有分号,如果不修改掉默认的结束符;那么函数将会产生错误
随后,创建生成随机数的函数:
- delimiter $$
- create function rand_num() RETURNS int(5)
- begin
- declare i int default 0;
- set i=floor(100+rand()*10);
- return i;
- end $$
插入员工表函数:
- delimiter $$
- create procedure insert_emp(IN START INT(10),IN max_num int(10))
- begin
- declare i int default 0;
- set autocommit=0;
- repeat
- set i=i+1;
- insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values((start+i),rand_string(6),'SALESMAN',0001,CURDATE(),2000,400,rand_num());
- until i=max_num
- end repeat;
- commit;
- end $$
插入部门的函数:
- delimiter $$
- create procedure insert_dept(IN START INT(10),IN max_num INT(10))
- begin
- declare i int default 0;
- set autocommit=0;
- repeat
- set i=i+1;
- insert into dept(deptno,dname,loc) values((start+i),rand_string(10),rand_string(8));
- until i=max_num
- end repeat;
- commit;
- end $$
- end $$
调用上边的两个插入函数
call insert_dept(100,10);
- +----+--------+------------+----------+
- | id | deptno | dname | loc |
- +----+--------+------------+----------+
- | 1 | 101 | OVnDatOMsA | BbGYWOaO |
- | 2 | 102 | PHQffkLYGl | mEgXmxza |
- | 3 | 103 | IljlEhcRXn | xvJjUSGz |
- | 4 | 104 | EwuFUElxBk | zNrtSdVl |
- | 5 | 105 | vtHaksNIb | mdGUBVar |
- | 6 | 106 | FamifbRZyr | ljmJDQso |
- | 7 | 107 | tYLKrAAbHd | ziuuQRKZ |
- | 8 | 108 | SpXNXzEvmc | ByJZUzNo |
- | 9 | 109 | hXlpSoXPfj | HDUNcbT |
- | 10 | 110 | sfBoRlLUlA | OtCCdPIU |
- +----+--------+------------+----------+
在员工表中插入50W条数据,
mysql> call insert_emp(100001,500000);
这样就实现了大量数据的插入。
利用存储过程插入50W+数据的更多相关文章
- ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK
看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, 加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询 ...
- ASP.NET MVC + EF 利用存储过程读取大数据
ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK 看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, ...
- Mysql利用存储过程插入400W条数据
CREATE TABLE dept( /*部门表*/ deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/ dname VARCHAR(20) NO ...
- Mysql利用存储过程插入500W条数据
比如插入1000W数据,不建议一次性插入,比如一次插入500W,分批插入. 创建表 /*部门表*/ CREATE TABLE dept( id INT UNSIGNED PRIMARY KEY AUT ...
- 利用 Python 插入 Oracle 数据
# coding=utf-8 ''''' Created on 2020-01-05 @author: Mr. Zheng ''' import json; import urllib2 import ...
- SQL 利用存储过程实现对表数据有则更新无则添加(转)
初学存储过程,发现这篇文章简单易懂,特意转载,地址 http://blog.csdn.net/luotuomianyang/article/details/52013144 如果某一操作包含大量的T- ...
- 原!mysql存储过程 批量导入数据
mysql需要导入某前缀例如12345为前缀的,后缀扩展2位 即00-99. 利用存储过程插入数据. DROP PROCEDURE IF EXISTS insert_popsms_code;DELIM ...
- mysql用存储过程插入百万条数据, 及查询优化
查看所有存储过程: show procedure status; 查看详细存储过程 ptest: show create procedure ptest; 存储过程插入数据: create table ...
- [ios]利用alertView 插入数据都数据库。笔记
利用alertView 插入数据都数据库 -(void)addItemToList { UIAlertView *alter=[[UIAlertViewalloc]initWithTitle:@&qu ...
随机推荐
- 4星|《超级技术:改变未来社会和商业的技术趋势》:AI对人友好吗
超级技术:改变未来社会和商业的技术趋势 多位专家或经济学人编辑关于未来的预测,梅琳达·盖茨写了其中一章.在同类书中属于水平比较高的,专家只写自己熟悉的领域,分析与预测有理有据而不仅仅是畅想性质. 以下 ...
- 【sqli-labs】 less46 GET -Error based -Numeric -Order By Clause(GET型基于错误的数字型Order By从句注入)
http://192.168.136.128/sqli-labs-master/Less-46/?sort=1 sort=4时出现报错 说明参数是添加在order by 之后 错误信息没有屏蔽,直接使 ...
- Centos6.7 编译安装 MySQL教程
Centos6.7 编译安装 MySQL # 安装依赖包 [root@localhost ~]# yum -y install gcc gcc-c++ autoconf* automake* zlib ...
- 大白_uva10795_新汉诺塔
题意:给出所有盘子的初态和终态,问最少多少步能从初态走到终态,其余规则和老汉诺塔一样. 思路: 若要把当前最大的盘子m从1移动到3,那么首先必须把剩下的所有盘子1~m-1放到2上,然后把m放到3上. ...
- 项目关联到svn
最近因为要升级项目,改用64位的eclipse,原先已经被svn管理的项目需要被复制到另一个工作空间,只需要导入并复制项目到新的工作空间即可 右键,点import 选择已经存在的项目导入工作空间 选择 ...
- windows环境搭建ui自动化环境
windows环境安装python虚拟环境 https://www.cnblogs.com/suke99/p/5355894.html https://www.cnblogs.com/jiuyang/ ...
- css中有些属性的前面会加上“*”或“_(兼容IE浏览器)
给不同浏览器识别: color{ background-color: #CC00FF; /*所有浏览器都会显示为紫色*/ background-color: #FF0000\9; /*IE6.IE7. ...
- 内存管理(malloc和free的用法)
内存管理 1.堆和栈的区别: 1>栈的特征 1).执行的速度相对较快: 2).空间较小: 3).生存期由系统决定: 4).作用域较小: 5).有名空间,可以通过变量名或者数据名访问: 2> ...
- STM32定时器配置(TIM1-TIM8)高级定时器+普通定时器,定时计数模式下总结
文章结构: ——> 一.定时器基本介绍 ——> 二.普通定时器详细介绍TIM2-TIM5 ——> 三.定时器代码实例 一.定时器基本介绍 之前有用过野火的学习板上面讲解很详细,所以 ...
- mac上的svn命令
Mac 终端添加代码到SVN从SVN拉取代码步骤:1.cd /Users/指定路径(本地路径)2.svn checkout https://xxx.xxx.xx/svn/project(服务器路径) ...