欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

新增百万测试数据之 程序语言+导入功能

程序员文章站 2024-03-19 23:10:10
...

场景

XX的APP上线了,现需要一百万个学员的信息进行压力测试,那么数据从哪里来呢?直接找开发人员帮忙?可能会被鄙视!一条一条去insert?嗯,算了下大概需要20年!

不用怕,接下来教你一百种方法高效创建100万数据!

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

新增百万测试数据之 程序语言+导入功能

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

drop table if exists tb_lemon_student_score;create table tb_lemon_student_score(
	id int primary key auto_increment,
	sName varchar(50),
	phone varchar(11),
	score tinyint(1));

第二种方法:程序语言生成数据,使用工具进行导入

我们的思路是这样的,通过程序语言生成约定规则的百万数据,保存到文本文件中,再使用Navicat For MySQL强大的导入功能,将百万数据导入到数据库中

1:JAVA编程:写一个生成数据的应用程序

打开Eclipse,编写如下代码:

import java.util.Random;public class BatchInsertTest {
	public static void main(String[] args) {
		Random random = new Random();
		for (int i = 1; i <= 1000000; i++) {
			// 学员的id
			int id = i;
			// 学员的姓名
			String sName = "s_" + i;
			// 手机号码
			long mobile = 13000000000L + i;
			// 分数
			int score = random.nextInt(100);
			System.out.println(id + "|" + sName + "|" + mobile + "|" + score);
		}
	}}
程序说明:程序使用for循环,向控制台循环输出100万条学生信息,每行表示一个学生信息,规则为:id1100wsNames_拼接上id值,手机号13000000000+id值,分数0100随机整数,各个字段间采用分隔符“|”进行分割(这个分隔符在导入数据到数据库时有用)。

运行该JAVA应用程序,如图所示:

新增百万测试数据之 程序语言+导入功能

程序可以正常向控制台输出我们要求的数据,但是行数是有限的,默认Eclipse控制台显示行数是有限的,这个行数是可以调整的,但是百万行文本数据的拷贝这是非常耗资源的,所以介绍另外一种更高效的方法,可以直接把我们控制台的输出全部保存到指定的文件中。

2:将程序输出保存到指定文件

1)右键JAVA类->选择Run As ->选择Run Configurations

新增百万测试数据之 程序语言+导入功能

2)选择Run Configurations界面的Common项->勾选Output File->选择File System设置保存文件的位置,这里设置为桌面的data.txt文件:C:\Users\tommy\Desktop\data.txt

新增百万测试数据之 程序语言+导入功能

3)再次运行程序,能够看到在桌面上生成了一个data.txt文件,打开文件内容如下,一共100万行:

新增百万测试数据之 程序语言+导入功能

3:Navicat For MySQL导入文本数据

右键数据表,选择导入向导,选择导入类型为txt,进行一系列的导入设置后,开始导入:

新增百万测试数据之 程序语言+导入功能

注意:尤其注意要设置中间的的分隔符为竖线"|"大概一分钟后,导入结束。

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

新增百万测试数据之 程序语言+导入功能

新增百万测试数据之 程序语言+导入功能