如何指数级给数据库制造数据

发布时间 2023-05-22 11:38:20作者: 忘j

 前言 : 在做应该平台的压力测试 ,或者性能测试的时候 ,往往需要几十万 ,或者上百万有意义的数据 ,但是系统测试阶段很多都只要几百条 ,甚至几十条 ,如何快速简单的制造大量数据呢?

 

思路 : 通过mysql的脚本来实现

 比如我有一张 sys_user 表  

 1 CREATE TABLE `sys_user` (
 2   `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
 3   `dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID',
 4   `user_name` varchar(30) NOT NULL COMMENT '用户账号',
 5   `nick_name` varchar(30) NOT NULL COMMENT '用户昵称',
 6   `user_type` varchar(2) DEFAULT '00' COMMENT '用户类型(00系统用户)',
 7   `email` varchar(50) DEFAULT '' COMMENT '用户邮箱',
 8   `phonenumber` varchar(11) DEFAULT '' COMMENT '手机号码',
 9   `sex` char(1) DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
10   `avatar` varchar(100) DEFAULT '' COMMENT '头像地址',
11   `password` varchar(100) DEFAULT '' COMMENT '密码',
12   `status` char(1) DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
13   `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
14   `login_ip` varchar(128) DEFAULT '' COMMENT '最后登录IP',
15   `login_date` datetime DEFAULT NULL COMMENT '最后登录时间',
16   `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
17   `create_time` datetime DEFAULT NULL COMMENT '创建时间',
18   `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
19   `update_time` datetime DEFAULT NULL COMMENT '更新时间',
20   `remark` varchar(500) DEFAULT NULL COMMENT '备注',
21   PRIMARY KEY (`user_id`) USING BTREE
22 ) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户信息表';

 

插入语句

INSERT into sys_user (
user_id,
dept_id,
user_name,
nick_name,
user_type,
email,
phonenumber,
sex,
avatar,
password,
status,
del_flag,
login_ip,
login_date,
create_by,
create_time,
update_by,
update_time,
remark)  SELECT user_id,
dept_id,
user_name,
nick_name,
user_type,
email,
phonenumber,
sex,
avatar,
password,
status,
del_flag,
login_ip,
login_date,
create_by,
create_time,
update_by,
update_time,
remark FROM `sys_user`

 

select 里面的字段一个一个复制也比较麻烦, 可以通过concat ,以及系统表生成

select  COLUMN_NAME , CONCAT(column_name,',','') from information_schema.COLUMNS where table_name = 'sys_user';