mysql批量构造模拟数据

模拟数据构建记录:


场景:为了测试,需要给用户聊天记录表添加100w条数据。


思路:

1.创建随机主键id函数,因为我的主键不是自增主键
2.创建插入存储过程,主键生成调用上述函数
3.调用存储过程,进行数据插
4.如果对插入的列值有其他要求,可根据创建主键id函数方式来进行构造


过程:

1.创建主键生成函数

DELIMITER $$ 
create function generateId(n int)
returns varchar(1024)
begin
declare chars char(62) default `0123456789abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ`;
declare result varchar(1024) default '';
declare i int default 0;
repeat
set i = i + 1;
set result = concat(result,substring(chars,floor(1+rand()*62),1));
until i=n end repeat;
return result;
end $$

2.创建插入存储过程:


DELIMITER $$ 
create procedure insert_live_chat_record(n int)
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i + 1;
insert into live_chat_record values(generateId(32),'1', '10000000', '测试数据',  '10000000', '测试数据','2017-12-26 14:04:46', '百万数据测试', NULL, NULL, NULL, '2017-12-26 14:04:46', NULL, '2017-12-26 14:04:46', NULL,'0');
until i=n  
end repeat;
commit;
set autocommit = 1;
end $$ 

3.调用存储过程:

call insert_live_chat_record(1000000)

4.查看函数及存储过程:

show function status
show procedure status

小结:
1.创建函数的时候要先开启mysql创建函数功能,默认是关闭的

  • 查看方式:show variables like ‘%func%’;
  • 开启方式:set global log_bin_trust_function_creators=1;

2.创建函数和存储过程的时候,必须在开始和结束位置添加 DELIMITER $$, $$

你可能感兴趣的:(数据库)