如何指数级给数据库制造数据
前言 : 在做应该平台的压力测试 ,或者性能测试的时候 ,往往需要几十万 ,或者上百万有意义的数据 ,但是系统测试阶段很多都只要几百条 ,甚至几十条 ,如何快速简单的制造大量数据呢?
思路 : 通过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';