数据批量生成测试数据脚本

一、背景

在软件的开发过程中,开发人员设计完数据库表之后,难免会批量生成一批测试数据,有些开发的同学会通过测试用例编写一下插入数据,这样操作比较慢。那么今天小编就来讲讲我是怎么来批生成测试数据的。

二、执行脚本

这里是批量生产1000条数据,这个也是根据自己的需要去生产对应的测试数据,注意中间的insert语句,这个就是要插入的执行SQL

-- 循环插入
drop PROCEDURE dyq_data_insert;
DELIMITER;;
 
CREATE PROCEDURE dyq_data_insert()
  
 begin 
     declare num int; 
     set num = 0;
        while num < 10000 do
        
            INSERT INTO `t_table_name`(`id`, `data_type`, `name`, `id_card_type_code`, `id_card`, `gender_code`, `birth_date`) VALUES (UUID(), 'data_type', concat(elt(1 + floor(rand() * 4), '李', '王', '赵', '肖') , '*', elt(1 + floor(rand() * 36), '天', '强', '果', '秋', '好', '豪', '武', '智', '蕊', '晨', '柯','娅','崴','萁','鑫','岳','赫','森','珈','山','尚','延','延','紫','灵','山','舜','尊','楠','贤','达','美','毅','娅','轩','瑞')), 1, '440107193********0', floor(1 + RAND() * 2), date_add('2023-01-01 12:01:21', interval rand() * 150 day));

            set num = num + 1;
        end while;
   END;;
 
call dyq_data_insert();

三、随机模拟数据

  1. 数据库表字典表中1是男2是女3是未知,那么我们要随机生产1,2
SELECT floor(1 + RAND() * 2);
  1. 随机日期, 比如我要从2023-01-01 开始,在2023-05-30内随机生成一天
select date_add('2023-01-01 12:01:21', interval rand() * 150 day)
  1. 名称随机生成
SELECT concat(elt(1 + floor(rand() * 4), '李', '王', '赵', '肖') , '*', elt(1 + floor(rand() * 36), '天', '强', '果', '秋', '好', '豪', '武', '智', '蕊', '晨', '柯','娅','崴','萁','鑫','岳','赫','森','珈','山','尚','延','延','紫','灵','山','舜','尊','楠','贤','达','美','毅','娅','轩','瑞'));

四、查询数据脱敏

提供好具体的脚本,需要对身份证、姓名、电话 进行脱敏

SELECT 
replace('430422199911112222', SUBSTR('430422199911112222' FROM 7 FOR 8), '********') as "身份证脱敏", 
replace('张三山', SUBSTR('张三山' FROM 2 FOR 1), '*') as "姓名脱敏", 
replace('13392665400', SUBSTR('13392665400' FROM 4 FOR 4), '****') as "手机号码脱敏";

数据批量生成测试数据脚本_第1张图片

你可能感兴趣的:(数据库,数据库)