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

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

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