5.批次插入数据通过insert(...)values(...),(...)的方式批次插入数据 , 部分代码如下:
// 保存订单和解析位置保证在一个事务中SqlSession session = sqlSessionFactory.openSession();try { long startTime = System.currentTimeMillis(); FielAnalysisMApper fielAnalysisMapper = session.getMapper(FielAnalysisMapper.class); FileOrderMapper fileOrderMapper = session.getMapper(FileOrderMapper.class); fileOrderMapper.batchInsert(orderList); // 更新上次解析到的位置 , 同时指定更新时间 fileAnalysis.setPosition(endPosition + 1); fileAnalysis.setStatus("3"); fileAnalysis.setUpdTime(new Date()); fielAnalysisMapper.updateFileAnalysis(fileAnalysis); session.commit(); long endTime = System.currentTimeMillis(); System.out.println("===插入数据花费:" + (endTime - startTime) + "ms===");} catch (Exception e) { session.rollback();} finally { session.close();}...省略 , 更多可以查看Github完整代码...
如上代码在一个事务中同时保存批次订单数据和文件解析位置信息 , batchInsert通过使用mybatis的<foreach>标签来遍历订单列表 , 生成values数据;
总结以上展示了部分代码 , 完整的代码可以查看Github地址中的batchInsert模块 , 本地设置每次截取的文件大小为2M , 经测试1000w条数据(大小1.5G左右)插入mysql数据库中 , 大概花费时间在20分钟左右 , 当然可以通过设置截取的文件大小 , 花费的时间也会相应的改变 。
完整代码https://github.com/ksfzhaohui/blog/tree/master/mybatis
【如何快速安全的插入千万条数据?】
推荐阅读
- 如何判断Linux系统是否被黑客入侵?可以用这种方法
- Linux版 腾讯云服务器如何手动搭建 WordPress 个人站点
- 如何挑选蚬子
- 如何挑选红菜苔
- 如何挑选鹌鹑
- 如何挑选豆皮
- 如何自制葱油
- 如何挑选黄豆
- 如何挑选牛奶
- 如何挑选青豆