springboot+mysql+mybatis导入大批量数据到数据库(300w条)

在处理数据的时候,突然想到大批量的数据怎么快速的导入myql呢?网上也找了一下资料,觉得以下两个链接写得挺好的,我也是仿照链接来做的。大家有空可以做一下测试。链接1链接2
由于我自己不太擅长线程,所以我就弄了一个最笨的办法:循环。
在做测试的时候,我发现插入十万条两列纯数据到mysql是正常的时间也很快,但是到15万条的时候就报错了。后来查了一下原因,估计是超过了List的最大值了。后来我想了一下,那循环30次插入10万条不就好了?测试之后发现是可以的,因为是只有两列,所以时间大概是61秒。因为是内网写的,所以只能发核心的代码,核心代码如下:

public AvailableResult autoInsertInfo(AutoInsertInfoReqVo reqVo) {
		try {
			logger.info(">>>>>>>>>开始>>自动添加数据>>>>>>>>>");
			
			//创建一个学生List对象,存放自动生成的数据
			//List<Studentsinfo> stList = new ArrayList<Studentsinfo>();
			
			//创建时间比较,看大概花费多长时间
			long start = System.currentTimeMillis();
			
			for(int j = 1;j<=30;j++) {
				
				//创建一个学生List对象,存放自动生成的数据
				List<Studentsinfo> stList = new ArrayList<Studentsinfo>();
				
				logger.info(">>>>>>>>>>这是第"+j+"次插入数据");
				
				for(int i = 1;i<=100000;i++) {
					//创建一个新的学生对象
					Studentsinfo studentsinfo = new Studentsinfo();
					
					//设置对应的值
					studentsinfo.setName("test"+i);
					studentsinfo.setPassword("123456+"+i);
					
					//把学生对象添加到List列表内
					stList.add(studentsinfo);
				}
			
				//调用mapper插入list对象,这里是调用自带的插入数据库方法
				studentsinfoMapper.insertList(stList);
			}
			
			
			long end = System.currentTimeMillis();
			
			logger.info(">>>>>>>>>>结束>>添加学生信息>>>>>>>>>>");
			
			logger.info(">>>>>>>>>>共耗时"+((end-start)/1000)+"秒");
			
			return AvailableResult.ok("添加学生信息成功");
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(">>>>>>>>>>添加学生信息异常,原因为:" + e.getMessage());
			return AvailableResult.errorException(e.getMessage());
		}
	}

到时候在本地测试没问题之后,再把代码上传吧。核心思想就是将数据分批导入。肯定还有更好的办法,也希望你们可以留言告诉我,谢谢。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值