java 数据分批插入

java 数据分批插入,第1张

import java.util.ArrayList  

import java.util.List  

  

public class FenDuan {  

  

    /** 

     * @param args 

     */  

    public static void main(String[] args) {  

          

        //1.总记录数  

        List<String> oldList = new ArrayList<String>()  

        for (int i = 0 i < 1045 i++) {  

            oldList.add((i+1)+"")  

        }  

          

        //2.分页数据信息  

        int totalSize = oldList.size() //总记录数  

        int pageSize = 10 //每页N条  

        int totalPage = totalSize/pageSize //共N页  

  

        if (totalSize % pageSize != 0) {    

            totalPage += 1    

            if (totalSize < pageSize) {    

                pageSize = oldList.size()   

            }    

        }    

        System.out.println("循环保存的次数:"+totalPage)//循环多少次    

  

        for (int pageNum = 1 pageNum < totalPage+1 pageNum++) {  

            int starNum = (pageNum-1)*pageSize  

            int endNum = pageNum*pageSize>totalSize?(totalSize):pageNum*pageSize  

            System.out.println("起始:"+starNum+"-"+endNum)  

              

            String str = ""  

            for (int i = starNum i < endNum i++) {  

                str += oldList.get(i) +"   "  

            }  

  

            System.out.println("第"+pageNum+"批:" +str)  

        }  

  

  

    }  

  

}

这个只是一个思路

你的事务控制问题。

大量数据插入的时候,可以将数据量分批,每次事务提交一批。

例如:

con.setAutoCommit(false)// 更改JDBC事务的默认提交方式

Statement stmt = conn.createStatement()

// 第一批 省略n条

stmt.addBatch("insert into dept values (52,'a','aa')")

stmt.addBatch("insert into dept values (53,'b','bb')")

stmt.addBatch("insert into dept values (54,'c','cc')")

stmt.executeBatch()

con.commit()//提交JDBC事务

stmt.close()

// 第二批 省略n条

stmt = conn.createStatement()

stmt.addBatch("insert into dept values (52,'a','aa')")

stmt.addBatch("insert into dept values (53,'b','bb')")

stmt.addBatch("insert into dept values (54,'c','cc')")

stmt.executeBatch()

con.commit()//提交JDBC事务

stmt.close()

// 第n批

。。。。。。

con.setAutoCommit(true)// 恢复JDBC事务的默认提交方式

conn.close()

读取数据估计是没办法了,重点可以放在写入的 *** 作上,粗略的认为,你使用框架进行数据库写入 *** 作还不如用使用java原生的jdbc进行 *** 作然后使用jdbc 的原生的批处理,我觉得肯定比框架快。我记得我当时插入10w条数据,只用了3秒,不过用的是oracle数据库。进行边读取边插入,这样占用的内存也相对小一些


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10076305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存