转自: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. dom4j.jar 的调试方法

    1.将jar包的路径写在 classpath下 在cmd窗口中,查看 classpath的内容是否已经加上该路径,win7 下cmd窗口一定要是管理员身份执行 2.在D盘新建一个DOM4JWriter ...

  2. python os os.path模块学习笔记

    #!/usr/bin/env python #coding=utf-8 import os #创建目录 os.mkdir(r'C:\Users\Silence\Desktop\python') #删除 ...

  3. day03-执行python方式、变量及数据类型简介

    目录 执行Python程序的两种方式 1. 第一种:交互式 2. 第二种:命令式 3. Python执行程序的三个阶段 变量 变量 什么是变量 Python中的变量 变量名的命名规范 内存管理 定义变 ...

  4. cstring 转 string

    都通过基本类型来转换即可:CString可以转换为基本类型LPCTSTR,LPCTSTR根据项目编码可以是const char*或者const wchar_t*:string可以用c_str()转换为 ...

  5. java关于工作,跳槽之总结

    关于工作中: 如何展示自己项目中的亮点,技术或者难点: 总结我的经历和技术倒是可以,但是我做的项目和我会的技术都很平庸,实在找不到亮点怎么办? 如果知道了你没有亮点,也就是知道了你自己欠缺什么,那么下 ...

  6. common_functions.h:64:24: error: token ""__CUDACC_VER__ is no longer supported.

    问题在复现工程https://github.com/google/hdrnet时出现. 现象: 解决: TensorFlow版本问题,升级到版本1.10.0之后,问题解决.

  7. JavaScript学习笔记之DOM对象

    目录 1.Document 2.Element 3.Attribute 4.Event 1.Document 每个载入浏览器的 HTML 文档都会成为 Document 对象,Document 对象允 ...

  8. Problem 30

    Problem 30 https://projecteuler.net/problem=30 Surprisingly there are only three numbers that can be ...

  9. 腾讯云,搭建LNMP环境

    LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.centos ...

  10. Delphi 10.3.2最新消息

    官方已经发布消息,招内测人员了! https://www.barnsten.com/default/newsupdates/details?news_id=328 https://docs.googl ...