高分求助:java对大批量数据进行操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高分求助:java对大批量数据进行操作相关的知识,希望对你有一定的参考价值。
程序对大数据量进行操作。操作的数据库为Oracle
过程是先对数据进行delete操作,然后进行insert操作。
数据量大概是百万条左右。
现在使用的方法是jdbc的PreparedStatement,每5万条commit一次。
可是这样的话程序的速度还是达不到要求。
如:
if(((a+1) % 50000)==0)
delPstmt.executeBatch();
insPstmt.executeBatch();
dbConn.commit();
dbConn.setAutoCommit(true);
delPstmt.close();
insPstmt.close();
dbConn.setAutoCommit(false);
delPstmt = dbConn.prepareStatement(deleteSql);
insPstmt = dbConn.prepareStatement(insertSql);
求助?有没有比较快的方法,不限定于用jdbc.导出文件导入库什么方法也可以。
但是一定得按顺序先执行delete操作,再进行insert操作。
Java基础学习总结(194)—— Java 多线程 + List 分段完美解决导入等批量更新场景问题
整体流程图
步骤
获取需要进行批量更新的大集合A,对大集合进行拆分操作,分成N个小集合 A-1 ~ A-N 。
开启线程池,针对集合的大小进行调参,对小集合进行批量更新操作,对流程进行控制,控制线程执行顺序。
1、按照指定大小拆分集合的工具类
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import java.util.List;
/**
* 拆分结合工具类
*/
public class SplitListUtils
/**
* 拆分集合
*
* @param <T> 泛型对象
* @param resList 需要拆分的集合
* @param subListLength 每个子集合的元素个数
* @return 返回拆分后的各个集合组成的列表
* 代码里面用到了guava和common的结合工具类
**/
public static <T> List<List<T>> split(List<T> resList, int subLi
以上是关于高分求助:java对大批量数据进行操作的主要内容,如果未能解决你的问题,请参考以下文章
求助 自动读取excel并将其里面的批量超链接,然后批量进行下载
Java基础学习总结(194)—— Java 多线程 + List 分段完美解决导入等批量更新场景问题