XXX的APP上线了,
现需要一百万个学员的信息进行压力测试,
那么数据从哪里来呢?
直接找开发帮忙?
可能会被他鄙视!
一条一条去insert?
嗯,算了下大概需要20年!
不用怕,Happy老师接下来教你一百种方法
高效创建100万数据!
下面是XXXAPP中的一个学生成绩表,
表结构很简单,id是主键,自增长唯一标识一个学生,sName是柠檬班每个学生的昵称,phone是手机号码,还有一个让我们既爱又恨的分数字段score。 附建表SQL:
===================================================
第一种方法:运用EXCEL辅助新增
1:excel新增少量数据
新建一个excel文件,新增一行数据,分别为1、13000000001,s_1,80对应学生成绩表中各字段 首先我们约定一个规则,现在想创建百万具有差异化的数据。
也就说用户的id需要各不相同(这个交给数据库自增长控制),用户的手机号、用户名也各不相同,成绩则希望能够用随机整数保存。
运用excel数据单元格下拉功能新增数据到excel文件中
现在我们找到一个非常简单又有效的方法来新增数据,并且各行数据间也保持了差异性,那是不是一直往下拖动就能得到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文件类型进行导入,具体步骤如下图所示:
==================================================
3:INSERT … SELECT语法复制数据
现在我们打开表查看下数据,10000条数据已经导入成功:
但是与我们要的100w数据还相差甚远,这里教大家一个非常好用的查询插入的SQL语句,语法如下: INSERT 表1(字段1,字段2,字段3…) SELECT 字段1,字段2,字段3… FROM 表2; 该语句可以将select语句中查询出结果集插入到表中 。
现在查询出当前tb_lemon_student_score表的所有记录数,
然后使用insert…select的语法达到复制数据的效果
执行上述语句,复制插入10000条数据成功
查询,发现数据表中已经有20000的记录了
循环使用执行上面的sql语句,就能够达到指数级插入数据的效果。
比如下一次执行,则2w记录将变成4w,再执行,则4w变成8w,以此类推,通过数次执行,数据表就有了百万级别的数据了:
==================================================
4:修改表数据保持差异性
为了保证数据的差异性,符合我们前面约定的规则:用户的id各不相同(这个交给数据库自增长控制),用户的手机号、用户名各不相同,成绩用随机整数保存,使用update语句对百万数据进行修改
最后,select抽查,数据已经符合我们的要求了
=================================================