欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据

程序员文章站 2024-03-16 13:56:28
...

需求说明:

测试接口时需要造数据,由于数据层次比较复杂导致数量较大,手动添加比较困难,所以就建了一个存储过程函数,来遍历插入数据。

 

工具 Navicat for MySQL

1、这里使用的Navicat  所以先安装Navicat 并连接到你想有创建函数的数据库

2、新建函数

Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据

***注意****

由于软件版本不同 步骤稍有差别,以下第3、4部是我用window时 老版本的navicat需要选择这两部,现在用mac版的 版本貌似比较新,直接就进入第5步了。如果你直接进入第5部  直接进行编辑即可,就像写java、scala等一样写一个function就好了,只是语法有所不同而已。

3、选择过程

Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据

4、设置添加参数,如选择IN指的是调用此函数时传入的参数名以及类型,out为返回值........

Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据

5、在以下对应位置修改和填写自己需要的内容,我们只需要写方法名,参数列表,函数体 就ok了

Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据

填写完函数内容保存即可

Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据

示例:以下是我创建之后的语句

注:其中 第一句中的DEFINER=`root`@`%`  是创建语句时DEFINER = CURRENT_USER 自动获取替换登录用户后生成的,不需要自己修改。

CREATE DEFINER=`root`@`%` PROCEDURE `MakeData_dm_f_activity_analysis_hour`()
BEGIN
	DECLARE dataType int;#声明变量(有些变量需要添加长度限制才能正常保存函数)
	DECLARE grading int;
	DECLARE gradTime VARCHAR(11);#声明变量(有些变量需要添加长度限制才能正常保存函数)
	DECLARE sumCount int;
	DECLARE inputDate VARCHAR(11);
	set inputDate='2018-05-01';#需要造那天的数据修改此处即可
	set dataType=1;
	set grading=0;
	WHILE grading<24 do   #插入数据的多少
		set sumCount=RAND()*1000;   #随机函数 RAND()生成的是0~1之间的小数,乘以多少就可以放大多少倍,如起点不是0,则加上起点数 如20~80:RAND()*60+20

	if (grading<10) then  
		 set gradTime = CONCAT('0',grading,':00'); 
	else  
		set gradTime =CONCAT(grading,':00');  
	end if;
		#5个数据类型 和24个小时遍历生成数据,组合七个固定生命周期插入
		INSERT INTO `bg_webAnalysis`.`dm_f_activity_analysis_hour`(`id`, `tenant_id`, `activity_id`, `type`, `data_type`, `sum_target`, `data_hour`, `created_at`, `updated_at`, `created_by`, `updated_by`, `publish_status`, `input_date`) VALUES (null, 1, 1, 1, dataType, sumCount, gradTime, '2018-05-21 14:51:34', '2018-05-21 14:51:40', 123123, 3213123, 1, inputDate);
	if (dataType<5) then  
		 set dataType= dataType+1;
	elseif (dataType=5) then  
		 set grading=grading+1; 
		 set dataType= 1;
	end if; 
	END WHILE;

END;

此处是造数,所以无需参数和返回值。

 

注意事项/语法:

1、DECLARE 用来声明变量。但是有些变量需要添加长度限制才能正常保存函数。

2、set 用给变量赋值

3、WHILE do END WHILE; 来循环

4、条件用if语句

if (dataType<5) then

set dataType= dataType+1;

elseif (dataType=5) then

set grading=grading+1;

set dataType= 1;

end if;

但是此处注意elseif 要连起来写。

5、CONCAT(str1,str2,str3,......'); 函数用来拼接字符串

6、RAND()生成0~1的数据数(与java等类似)可以*1000 再赋给int即可产生,0~1000的随机整数