mysql存储过程 项目使用场景

1 项目场景:手机流量统计在共享充电宝,运营商的计费项目都很场景,车联网车辆流量使用,在测试环境,如何模拟数据,为测试提供测试数据呢?

      a 使用java 搭建生产测试数据的模拟器(推荐)

      b 使用mysql 存储过程,生成流量数据直接入库,批量生成数据(这次记录一下这个方式)

模拟场景:模拟10万台车,1年 的流量数据

思路: 查出10万个台车   循环每一个车,生成车1年的流量数据

mysql的实现:

 遍历车辆  

CREATE DEFINER=`root`@`%` PROCEDURE `make_data_out`( in insertCount int )
begin
				-- 定义变量
                DECLARE i int default 1;
				DECLARE carvar VARCHAR(50); 
                -- 定义游标遍历时,作为判断是否遍历完全部记录的标记
				DECLARE num INT DEFAULT 0;
 				DECLARE carIdvar CURSOR FOR SELECT car_id FROM vehicle_info;
	            -- 声明当游标遍历完全部记录后将标志变量置成某个值
				DECLARE CONTINUE HANDLER FOR NOT FOUND SET num=1;

			 	OPEN carIdvar; 
						FETCH carIdvar INTO carvar;
						WHILE num <> 1 DO
                                -- 调用存储过程
								call make_flow_data(insertCount, carvar);
								FETCH carIdvar INTO carvar;	
								
				END WHILE;
                --关闭游标
				CLOSE carIdvar;
  
    end

生成每一台车的一年的数据 

CREATE DEFINER=`root`@`%` PROCEDURE `make_flow_data`( in insertCount int, in car_id VARCHAR(50) )
begin
        declare i int default 10;
				
				set autocommit = 0;

        a: while i <= insertCount do
	
             	INSERT INTO  data_flow(id, car_id, imsi, flow_day, up_flow, down_flow, total_flow, report_time) 
       VALUES ( null, car_id, '46011505516403346011505516403300', DATE(DATE_SUB(NOW(), INTERVAL i DAY)), 2097152, 2097152, 4194304, '2021-02-19 15:04:47');	
            set i = i +1;
        end while a;
			 commit;
    end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值