mysql利用存储过程批量创建表,插入数据

背景:

在特定场景测试中时,需要构造10000张表,每张表中1000条数据。

创建库:

存储过程是基于数据库的,首先创建一个测试库
drop database if exists performanceTest;
create database performanceTest charset utf8;
use performanceTest;

创建存储过程:

在交互式shell中,分号本身代表语句结束,但是存储过程本身带有分号,因此需要先更改结束符号为//

DELIMITER //;

新建表的存储过程,num代表需要创建表的数量

create procedure quickAddTb(IN num INTEGER)
begin
declare var int;
declare tableName varchar(32);
set var=0;
while var<num do
set tableName=concat('test',var);
set @STMT:=concat('create table ',tableName,'(
id int auto_increment key,
ipAddr varchar(32),
email varchar(32));');
PREPARE STMT FROM @STMT;
EXECUTE STMT;
set var=var+1;
end while;
end;//

插入表数据的存储过程,tbnum代表表数量,tbrow代表表行数

create procedure insertData(IN tbnum INTEGER, tbrow INTEGER)
begin
declare var int;
declare row int;
declare tableName varchar(32);
set var=0;
while var<tbnum do
set tableName=concat('test',var);
set row=0;
while row<tbrow do
set @INS:=concat('insert into ',tableName,' values(null,''192.168.18.12'',''7123456@qq.com'');');
select @INS;
PREPARE INS FROM @INS;
EXECUTE INS;
set row=row+1;
end while;
set var=var+1;
end while;
end;

查询存储过程

select * from mysql.proc;

删除存储过程

drop procedure performanceTest.quickAddTb; drop procedure
performanceTest.insertData;

执行存储过程

call performanceTest.quickAddTb(10000);
call performanceTest.insertData(10000,1000);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值