存储过程+函数造数据myql
admin
2023-04-17 20:21:43
0

往身份信息表插入N条记录,N=P*Q,
p:每条insert语句插入的记录数,由临时表的数量决定
q:循环次数,存储过程的入参

-- 身份信息表
drop table if exists t_identity_info;
create table t_identity_info (
id int(11) not null auto_increment comment '主键id',
real_name varchar(20) default null comment '姓名',
id_card varchar(18) not null comment '×××号',
create_time varchar(19) not null comment '创建时间',
primary key (id),
key index_id_card (id_card)
) engine=innodb auto_increment=1 default charset=utf8 comment='用户信息表';

-- 删除
drop function if EXISTS rand_xing_ming ;

-- 创建函数
create function rand_xing_ming() returns varchar(20)
begin
declare xing_string varchar(1000) default '赵钱孙李周吴郑王冯陈';
declare ming_string varchar(1000) default '天地玄黄宇宙洪荒日月';
declare xing_ming varchar(20) default '' ;

declare xing_index int;
declare ming_index int;
declare temp_xing varchar(10);
declare temp_ming varchar(10);

set xing_index = round(rand()10000) mod (char_length(xing_string)-1);
set ming_index = (round(rand()
10000)) mod (char_length(ming_string)-1);
set temp_xing = substring(xing_string,xing_index,1);
set temp_ming = substring(ming_string,ming_index,1);
set xing_ming = concat(temp_xing,temp_ming);
return xing_ming;
end
;

-- 测试
select rand_xing_ming();

-- 临时表,用来控制insert的条数
drop table if exists t_temp;
create table t_temp (
id int(11) not null auto_increment comment '主键id',
primary key (id)
) engine=innodb auto_increment=1 default charset=utf8 comment='临时表';

-- 插入100条数据
insert into t_temp values
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),();

-- 存储过程
drop procedure if exists insert_data;

delimiter ;;
create procedure insert_data(IN data_count int)
begin
declare i int;
set i = 0;
while i < data_count do
set i = i +1;

insert into t_identity_info (real_name,id_card,create_time)
select rand_xing_ming(),'abc',now() from t_temp ;

end while;
end
;;
DELIMITER ;

-- 调用存储过程 插入10W条记录
set autocommit= 0;
call insert_data(1000);
commit;

-- 验证
select count(1) from t_identity_info;

相关内容

热门资讯

美参议院投票批准凯文·沃什出任... △凯文·沃什(资料图)当地时间5月12日,美国参议院投票批准凯文·沃什出任美联储主席,目前相关投票程...
缺油!日本快撑不住了 日本零食巨头卡乐比为节省油墨竟将原本漂亮的包装改成了黑白两色,从“喜食”变得看上去像“丧食”。日本石...
英国首相斯塔默再遭逼宫,在内阁... 【文/观察者网 熊超然】在上周经历地方选举惨败后,作为执政党领袖的英国首相斯塔默于当地时间5月11日...
日防相声称:新西兰考虑进口日本... 据凤凰卫视报道,5月12日,日本防卫大臣小泉进次郎在记者会上表示,新西兰已将日本海上自卫队最上型改良...
小米YU7 GT“车厘子红”无... 5 月 12 日消息,博主 @王的男人、昨日晒出了小米 YU7 GT「车厘子红」实车照片。画面显示,...
中关村论坛重磅发布!大兴机场临... 3月27日,在中关村论坛数据跨境流动创新发展论坛上,北京大兴国际机场临空经济区(大兴)正式发布跨境可...
白宫公布随特朗普访华16位商界... 白宫11日公布了将随特朗普一同访华的商界领袖名单。据多家美媒报道,总共将有16位美国商界代表来到北京...
荣耀申请代码生成方法专利,提高... 国家知识产权局信息显示,南京荣耀软件技术有限公司申请一项名为“代码生成方法、电子设备及存储介质”的专...
凤凰连线:中美新一轮经贸磋商,... 中美双方将在韩国举行第七轮经贸磋商。美方的阵容和日程安排如何?在这轮磋商中有哪些关切?凤凰卫视驻韩国...
知情人士:阿联酋秘密打击伊朗,... 据参考消息援引美国《华尔街日报》网站5月11日报道,多名知情人士透露,阿联酋已对伊朗发动军事打击,令...