如何快速新增百万测试数据?

本贴最后更新于 803 天前,其中的信息可能已经时移世异

image.png

柠檬班的APP上线了,

现需要一百万个学员的信息进行压力测试,

那么数据从哪里来呢?

直接找开发帮忙?

可能会被他鄙视!

一条一条去insert?

嗯,算了下大概需要20年!

不用怕,Happy老师接下来教你一百种方法

高效创建100万数据!

下面是柠檬班APP中的一个学生成绩表,

image.png

表结构很简单,id是主键,自增长唯一标识一个学生,sName是柠檬班每个学生的昵称,phone是手机号码,还有一个让我们既爱又恨的分数字段score。 附建表SQL:

image.png

===================================================

第一种方法:运用EXCEL辅助新增

1:excel新增少量数据

新建一个excel文件,新增一行数据,分别为1、13000000001,s_1,80对应学生成绩表中各字段 首先我们约定一个规则,现在想创建百万具有差异化的数据。

也就说用户的id需要各不相同(这个交给数据库自增长控制),用户的手机号、用户名也各不相同,成绩则希望能够用随机整数保存。

运用excel数据单元格下拉功能新增数据到excel文件中

image.png

现在我们找到一个非常简单又有效的方法来新增数据,并且各行数据间也保持了差异性,那是不是一直往下拖动就能得到100w我们想要的记录呢?

答案是否定的,Excel2003版最大行数是65536行。

Excel2007开始的版本最大行数是1048576行 ,另外大家也可以去集思广益,看是否有方法在Excel中快速按照规则填充数据,当然这个不在本贴讨论范围内!

下拉拖动能得到想要的数据,但是局限性也很明显,excel行数是是有限的,拖动也需要耗费时间,所以我们暂时拖动10000w条数据填充到excel表中。

数据有了,怎么导入到数据库? Navicat for MySQL这个神器就提供这样的功能。

==================================================

2:Navicat For MySQL导入excel表中数据

打开Navicat For MySQL,连接上MySQL数据库,右键我们刚创建的tb_lemon_student_score表,选择导入向导,选择excel文件类型进行导入,具体步骤如下图所示:

image.png

3:INSERT … SELECT语法复制数据

现在我们打开表查看下数据,10000条数据已经导入成功:

image.png

但是与我们要的100w数据还相差甚远,这里教大家一个非常好用的查询插入的SQL语句,语法如下: INSERT 表1(字段1,字段2,字段3…) SELECT 字段1,字段2,字段3…
FROM 表2; 该语句可以将select语句中查询出结果集插入到表中 。

现在查询出当前tb_lemon_student_score表的所有记录数,

然后使用insert…select的语法达到复制数据的效果

image.png

执行上述语句,复制插入10000条数据成功

image.png

查询,发现数据表中已经有20000的记录了

image.png

循环使用执行上面的sql语句,就能够达到指数级插入数据的效果。

比如下一次执行,则2w记录将变成4w,再执行,则4w变成8w,以此类推,通过数次执行,数据表就有了百万级别的数据了:

image.png

4:修改表数据保持差异性

为了保证数据的差异性,符合我们前面约定的规则:用户的id各不相同(这个交给数据库自增长控制),用户的手机号、用户名各不相同,成绩用随机整数保存,使用update语句对百万数据进行修改

image.png

最后,select抽查,数据已经符合我们的要求了

image.png

1 操作
happy 在 2020-07-26 08:36:17 更新了该帖
回帖
请输入回帖内容 ...