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 对存储过程的支付有些弱鸡

原文地址:https://www.cnblogs.com/dzcici/p/9673015.html