zoukankan      html  css  js  c++  java
  • mysql自定义函数并在存储过程中调用,生成一千万条数据

    mysql 自定义函数,生成 n 个字符长度的随机字符串

    -- sql function
    
    delimiter $$
    create function rand_str(n int) returns VARCHAR(255)
    BEGIN
    
    declare str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSQUVWXYZ';
    declare i int DEFAULT 0;
    declare res_str VARCHAR(255) default '';
    
    while i < n do
    set res_str = concat(res_str,substr(str,FLOOR(rand()*52+1),1));
    set i = i + 1;
    end while;
    return res_str;
    
    end$$
    delimiter ;
    

    写好之后,运行一下,运行成功后,可以在函数下看到刚刚自定义的函数

    然后,调用一下

    SELECT rand_str(3);  -- 生成3个字符的随机字母
    

    写一个存储过程,

    实现功能:insert_emp2(2,10) 从2开始,插入10条数据

    delimiter $$
    create procedure insert_emp2(in startNum int ,in max_num int)
    BEGIN
    -- 声明一个变量记录当前是第几条
    declare i int DEFAULT 0;
    
    --  默认情况下是自动提交sql
    set autocommit = 0; -- 禁止自动提交sql
    
    
    -- 循环
    repeat 
    
    set i = i + 1;
    -- 插入数据   id 增加, name 随机,年龄随机
    insert into emp2 values (startNum + i,rand_str(5),floor(10+rand()*30));
    
    until i = max_num 
    end repeat ;
    
    commit; -- 待循环完毕后再进行提交,即整体提交整体的 sql,这样可以提高效率,否则循环里会一次一次的去提交sql,数据多了会很慢。
    
    end$$
    delimiter$$
    

    然后,调用 存储过程:

    call insert_emp2(100,10000000);  --插入一千万条数据进去	
    

    等几分钟

    。。。。

    好久啊

    这么久来 还没创建好

    我的天呐

    。。。。。

    hello

    我去

    后悔了,一千万有点太多了

  • 相关阅读:
    java处理图片--图片的缩放,旋转和马赛克化
    Node.JS + MongoDB技术浅谈
    nodejs版本更新问题:express不是内部或外部命令
    解决mongodb的安装mongod命令不是内部或外部命令
    MongoDB Windows环境安装及配置
    WebStorm主题设置
    分页插件PageHelper
    Dubbo入门
    JVM组成
    java 多线程例子
  • 原文地址:https://www.cnblogs.com/friday69/p/9408389.html
Copyright © 2011-2022 走看看