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