• 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

    我去

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

  • 相关阅读:
    Hibernate 3入門
    如何调整液晶显示器保护你的视力
    WEB前端开发经验总结实战篇
    【JS】引用类型之Array
    Oracle的DBA管理常用sql
    使用cos组建上传文件
    前台js将json转换成json对象的方法
    关于父页面访问iframe中元素和js的那点事
    数据库中IN和EXISTS的区别
    关于google浏览器有时莫名自动提交表单的问题
  • 原文地址:https://www.cnblogs.com/friday69/p/9408389.html
Copyright © 2020-2023  润新知