转自:https://www.aliyun.com/jiaocheng/1396184.html

首先,建立部门表和员工表:

部门表:

  1.  
    create table dept(
  2.  
    id int unsigned primary key auto_increment,
  3.  
    deptno mediumint unsigned not null default 0,
  4.  
    dname varchar(20) not null default "",
  5.  
    loc varchar(13) not null default ""
  6.  
    )ENGINE=INNODB DEFAULT CHARSET=GBK

员工表:

  1.  
    create table emp(
  2.  
    id int unsigned primary key auto_increment,
  3.  
    empno mediumint unsigned not null default 0,
  4.  
    ename varchar(20) not null default "",
  5.  
    job varchar(9) not null default "",
  6.  
    mgr mediumint unsigned not null default 0,
  7.  
    hiredate date not null,
  8.  
    sal decimal(7,2) not null,
  9.  
    comm decimal(7,2) not null,
  10.  
    deptno mediumint unsigned not null default 0
  11.  
    )ENGINE=INNODB DEFAULT CHARSET=GBK

开启二进制日志:

通过

show variables like 'log_bin_trust_function_creators'

可以看到默认的二进制日志时关闭的

  1.  
    Variable_name |Value |
  2.  
    --------------------------------|------|
  3.  
    log_bin_trust_function_creators |OFF |

通过下面的命令进行设置:

set global log_bin_trust_function_creators=1
  1.  
    Variable_name |Value |
  2.  
    --------------------------------|------|
  3.  
    log_bin_trust_function_creators |ON |

1.创建一个生成随机字符串的函数:

  1.  
    DELIMITER $$
  2.  
    create FUNCTION rand_string(n int) returns varchar(255)
  3.  
    BEGIN
  4.  
    declare chars_str varchar(100) default 'abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  5.  
    declare return_str varchar(255) default '';
  6.  
    declare i int default 0;
  7.  
    while i<n DO
  8.  
    set return_str=CONCAT(return_str,substring(chars_str,floor(1+rand()*52),1));
  9.  
    set i=i+1;
  10.  
    end while;
  11.  
    return return_str;
  12.  
    END $$

通过DELIMITER定义mysql语句的结束符,因为函数中多处有分号,如果不修改掉默认的结束符;那么函数将会产生错误

随后,创建生成随机数的函数:

  1.  
    delimiter $$
  2.  
    create function rand_num() RETURNS int(5)
  3.  
    begin
  4.  
    declare i int default 0;
  5.  
    set i=floor(100+rand()*10);
  6.  
    return i;
  7.  
    end $$

插入员工表函数:

  1.  
    delimiter $$
  2.  
    create procedure insert_emp(IN START INT(10),IN max_num int(10))
  3.  
    begin
  4.  
    declare i int default 0;
  5.  
    set autocommit=0;
  6.  
    repeat
  7.  
    set i=i+1;
  8.  
    insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values((start+i),rand_string(6),'SALESMAN',0001,CURDATE(),2000,400,rand_num());
  9.  
    until i=max_num
  10.  
    end repeat;
  11.  
    commit;
  12.  
    end $$

插入部门的函数:

  1.  
    delimiter $$
  2.  
    create procedure insert_dept(IN START INT(10),IN max_num INT(10))
  3.  
    begin
  4.  
    declare i int default 0;
  5.  
    set autocommit=0;
  6.  
    repeat
  7.  
    set i=i+1;
  8.  
    insert into dept(deptno,dname,loc) values((start+i),rand_string(10),rand_string(8));
  9.  
    until i=max_num
  10.  
    end repeat;
  11.  
    commit;
  12.  
    end $$
  13.  
    end $$

调用上边的两个插入函数

call insert_dept(100,10);
  1.  
    +----+--------+------------+----------+
  2.  
    | id | deptno | dname | loc |
  3.  
    +----+--------+------------+----------+
  4.  
    | 1 | 101 | OVnDatOMsA | BbGYWOaO |
  5.  
    | 2 | 102 | PHQffkLYGl | mEgXmxza |
  6.  
    | 3 | 103 | IljlEhcRXn | xvJjUSGz |
  7.  
    | 4 | 104 | EwuFUElxBk | zNrtSdVl |
  8.  
    | 5 | 105 | vtHaksNIb | mdGUBVar |
  9.  
    | 6 | 106 | FamifbRZyr | ljmJDQso |
  10.  
    | 7 | 107 | tYLKrAAbHd | ziuuQRKZ |
  11.  
    | 8 | 108 | SpXNXzEvmc | ByJZUzNo |
  12.  
    | 9 | 109 | hXlpSoXPfj | HDUNcbT |
  13.  
    | 10 | 110 | sfBoRlLUlA | OtCCdPIU |
  14.  
    +----+--------+------------+----------+

在员工表中插入50W条数据,

mysql> call insert_emp(100001,500000);
这样就实现了大量数据的插入。

利用存储过程插入50W+数据的更多相关文章

  1. ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK

    看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, 加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询 ...

  2. ASP.NET MVC + EF 利用存储过程读取大数据

    ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK 看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, ...

  3. Mysql利用存储过程插入400W条数据

    CREATE TABLE dept( /*部门表*/ deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/ dname VARCHAR(20) NO ...

  4. Mysql利用存储过程插入500W条数据

    比如插入1000W数据,不建议一次性插入,比如一次插入500W,分批插入. 创建表 /*部门表*/ CREATE TABLE dept( id INT UNSIGNED PRIMARY KEY AUT ...

  5. 利用 Python 插入 Oracle 数据

    # coding=utf-8 ''''' Created on 2020-01-05 @author: Mr. Zheng ''' import json; import urllib2 import ...

  6. SQL 利用存储过程实现对表数据有则更新无则添加(转)

    初学存储过程,发现这篇文章简单易懂,特意转载,地址 http://blog.csdn.net/luotuomianyang/article/details/52013144 如果某一操作包含大量的T- ...

  7. 原!mysql存储过程 批量导入数据

    mysql需要导入某前缀例如12345为前缀的,后缀扩展2位 即00-99. 利用存储过程插入数据. DROP PROCEDURE IF EXISTS insert_popsms_code;DELIM ...

  8. mysql用存储过程插入百万条数据, 及查询优化

    查看所有存储过程: show procedure status; 查看详细存储过程 ptest: show create procedure ptest; 存储过程插入数据: create table ...

  9. [ios]利用alertView 插入数据都数据库。笔记

    利用alertView 插入数据都数据库 -(void)addItemToList { UIAlertView *alter=[[UIAlertViewalloc]initWithTitle:@&qu ...

随机推荐

  1. TensorFlow:Windows下使用TensorFlow-Python版本

    原文链接:Win10X64下安装使用TensorFlow 安装TensorFlow 由于Google那帮人已经把 TensorFlow 打成了一个 pip 安装包,所以现在可以用正常安装包的方式安装 ...

  2. 2015.12.20-2015.12.25 大论文迭代 A

    进一步充实大论文内容.结构,完善一遍大论文 12.20周天,完成论文第五章总结部分,和第一章的修改 12.21周一,完成论文第二章的修改充实 12.22周二,完成论文第三章的修改充实 12.23周三, ...

  3. C#鸡翁百鸡

    一个for static void Main(string[] args) { int x, y, z; ; x <= ; x++) { - * x) % == ) { y = ( - * x) ...

  4. 扩增子图表解读8网络图:节点OTU或类Venn比较

    网络图 Network 网络图虽然给人高大上的感觉,但是由于信息太多,无法给读者提供读有效的可读信息或是读者不知道该理解什么,总是让人望尔却步.那是因为大家太不了解网络,自己读不懂网络想表达的意思及其 ...

  5. python 模块学习——time模块

    Python语言中与时间有关的模块主要是:time,datetime,calendar time模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可 ...

  6. javascript模块化编程(一)(http://www.ruanyifeng.com/blog/2012/10/javascript_module.html)

    Javascript模块化编程(一):模块的写法   随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个 ...

  7. js案例分析

    名字取的高大上,其实只是我平时上网浏览遇到的一些我感觉还不错的小题目,再加上我或者是我在网上找到的一些理解,就保存到这里了. 2019/4/2  最新开了个新坑,是一个javascipt30的一些案例 ...

  8. c++/c DEBUG宏

    #cat log_debug.h #ifdef DEBUG int log_debug(const char *format, ...); #else int log_debug(const char ...

  9. Linux下源码安装Peach-2.3.8教程

    在peach文件夹下运行 python peach.py ./samples/HelloWorld.xml 提示先安装4Suite-XML. 根据提示在dependences文件夹下安装,出现两次错误 ...

  10. python--(十五步代码学会进程)

    python--(十五步代码学会进程) 一.进程的创建 import time import os #os.getpid() 获取自己进程的id号 #os.getppid() 获取自己进程的父进程id ...