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

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 更新了该帖
回帖
请输入回帖内容 ...