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数据库。进行边读取边插入,这样占用的内存也相对小一些欢迎分享,转载请注明来源:内存溢出
评论列表(0条)