高分求助: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操作。

每5万条commit一次 太多了吧,你试试看50条 参考技术A 没搞明白是要delete五万条数据,还是insert五万条数据.感觉根本就没有必要进行这种操作.除非是在测试数据库性能的时候用到.我猜你ORACLE不是花钱买的.所以不心疼,硬盘也不是花钱买的吧.而且一个insert select或者select for update就能解决的问题,没有必要搞这么大吧. 参考技术B 非要在每次insert操作之前进行delete操作吗,不能先一次delete完吗,用命令行的方式,导入文件比较快吧 参考技术C 单个数据库能支撑得起就不错了.

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并将其里面的批量超链接,然后批量进行下载

高分求助:如何让html静态页面的源代码被,js代码屏蔽

pb 9.0 批量导出excel 高分在线等

Java基础学习总结(194)—— Java 多线程 + List 分段完美解决导入等批量更新场景问题

Java基础学习总结(194)—— Java 多线程 + List 分段完美解决导入等批量更新场景问题

高分求助生成二维码的vb代码