• MySQL随机字符串函数批量插入数据


     

     简单举个例子:

    drop table if exists demo1
    
    create table demo1
    (
        id int primary key auto_increment,
        name varchar(50)
    )
    desc demo1
    
    -- 随机字符串函数用于插入数据
    drop function if exists rand_str;
    
    delimiter //
    create function rand_str(size int,type int)
    returns varchar(255)
    begin
        declare seed varchar(255) ;
        declare seed_num varchar(255) default '1234567890';
        declare seed_str varchar(255) default 'qwertryuiopasdfghjklzxcvbnm';
        declare ret varchar(255) default '';
       declare i int default 0;
       -- 为seed 赋值 首先判断类型需要得到的是数字
      -- 还是字符串0为数字 1为字符串
      -- 都不是的话那则拼接数字与字符串 concat();
    set seed = case type when 0 then seed_num when 1 then seed_str else concat(seed_num,seed_str) end; -- 循环拼接字符串 随机得到的数字之后截取字符串
      -- 循环一次则截取一个 条件小于参数size
    while i < size do set ret = concat(ret, substring(seed, floor(length(seed) * rand() + 1), 1)); set i = i + 1; end while;   -- 最后返回 return ret; end // delimiter ; -- 使用存储过程插入批量数据 drop procedure if exists pro_demo; delimiter // create procedure pro_demo( num int ) begin -- 循环语句写法 while end while; repeat .. set autocommit = 0; set @i=0; repeat set @i=@i+1; insert into demo1(name) values(rand_str(7,5)); until @i =num end repeat; if @i % 10000 = 1 then commit; end if; commit; set autocommit = 1; end // delimiter ; -- set @num = 100000; call pro_demo(@num); select * from demo1

    这里了解一下存储过程不建议使用

    1、难以调试,难以维护

    2、业务逻辑跟数据库耦合度过高,不便于迁移

    3、对数据的压力过大,需要分拆

    4、MySQL 对存储过程的支付有些弱鸡

  • 相关阅读:
    海明距离分类 JavaScript
    控制器语法糖
    中文版 ImageNet Classification with Deep Convolutional Neural Networks
    中文版 R-FCN: Object Detection via Region-based Fully Convolutional Networks
    中文版 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    Scrapy中scrapy.Request和response.follow的区别
    神马是回调函数?
    数据库索引原理及优化
    MYSQL数据库引擎区别详解
    数据库索引原理详解
  • 原文地址:https://www.cnblogs.com/dzcici/p/9673015.html
Copyright © 2020-2023  润新知