XXX的APP上线了,


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


那么数据从哪里来呢?


直接找开发帮忙?


可能会被他鄙视!


一条一条去insert?


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


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




高效创建100万数据!




下面是XXXAPP中的一个学生成绩表, 


SQL Server怎么插入百万条数据_SQL Server怎么插入百万条数据



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



SQL Server怎么插入百万条数据_如何快速新增百万测试数据_02




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




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




1:excel新增少量数据




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




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




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



SQL Server怎么插入百万条数据_字段_03






现在我们找到一个非常简单又有效的方法来新增数据,并且各行数据间也保持了差异性,那是不是一直往下拖动就能得到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文件类型进行导入,具体步骤如下图所示: 


SQL Server怎么插入百万条数据_字段_04




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




3:INSERT … SELECT语法复制数据




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


SQL Server怎么插入百万条数据_MySQL_05



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




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




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


SQL Server怎么插入百万条数据_字段_06





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



SQL Server怎么插入百万条数据_数据_07


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


SQL Server怎么插入百万条数据_SQL Server怎么插入百万条数据_08



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




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



SQL Server怎么插入百万条数据_如何快速新增百万测试数据_09




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




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




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



SQL Server怎么插入百万条数据_如何快速新增百万测试数据_10



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



SQL Server怎么插入百万条数据_字段_11






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