zoukankan      html  css  js  c++  java
  • 【MySQL】创建函数和存储过程,批量插入大数据

    创建部门表和员工表

    CREATE TABLE `dept` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `deptName` varchar(30) DEFAULT NULL,
      `address` varchar(40) DEFAULT NULL,
      `ceo` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8
    
    
    
    CREATE TABLE `emp` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `empno` int(11) NOT NULL,
      `name` varchar(20) DEFAULT NULL,
      `age` int(3) DEFAULT NULL,
      `deptId` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=500001 DEFAULT CHARSET=utf8
    
    
    

    创建函数,随机生成字符串和部门编号

    CREATE DEFINER=`root`@`%` FUNCTION `rand_num`(from_num INT ,to_num INT) RETURNS int(5)
    begin
       declare i int default 0;
       set i=FLOOR(from_num +RAND()*(to_num -from_num+1));
     return i;
     end
    
    
    CREATE DEFINER=`root`@`%` FUNCTION `rand_string`(n int) RETURNS varchar(255) CHARSET utf8
    begin
       declare chars_str varchar(100) default 'qwertyuiopasdfghjklzxcvbnm';
       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
    
    

    创建存储过程

    CREATE DEFINER=`root`@`%` PROCEDURE `insert_dept`(max_num int)
    begin
    declare i int default 0;
     set autocommit=0;
     repeat
     set i=i+1;
     insert into dept(deptname,address,ceo) values(rand_string(8),rand_string(10),rand_num(1,500000));
     until i=max_num 
     end repeat;
     commit;
     end
    
    
    
     CREATE DEFINER=`root`@`%` 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, NAME ,age ,deptid)
     values((start+i),rand_string(6),rand_num(30,50),rand_num(1,10000));
     until i=max_num 
     end repeat;
    commit;
    end
    
    

    调用存储过程批量插入数据

    call insert_dept(10000);
    
    CALL insert_emp(100000,500000);
    
    “年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。” by. 马尔克斯
  • 相关阅读:
    缺少环境变量导致Xilinx Platform Studio无法打开之解决方法
    PS利用EMIO控制LED灯
    利用zedboard添加自定义IP核完成简易计算器
    读后感 关于 《不要一辈子靠技术混饭吃》(挪窝第一篇)
    挪窝了,再谈blog
    windows server 2008 无法打开角色,角色错误,刷新服务器时出现意外错误,HRESULT:0x80070422
    Linux 基础正则表达式和扩展正则表达式
    Linux 基础正则表达式
    Linux 通配符与特殊符号
    Linux 基础命令
  • 原文地址:https://www.cnblogs.com/jzsg/p/13184391.html
Copyright © 2011-2022 走看看