java插入数据50万条的简单介绍
今天给各位分享java插入数据50万条的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java循环插入50万条数据,为什么内存溢出了
- 2、java 怎么把5万条数据分批插入数据到mysql,之前插1,2万没事, 多了就内存溢出
- 3、java excel poi 大数据量50W 内存溢出
- 4、java 1.txt中有50万个数据,数组限定大小为5000,请完成对50万个数据从小到大排序,保存到2.txt,希望有代码
Java循环插入50万条数据,为什么内存溢出了
变量的使用有问题吧,在二重循环里用ps取结果集,但在三重循环里又用ps插入数据,而且每次三重循环在创建新ps前都没有close。
java 怎么把5万条数据分批插入数据到mysql,之前插1,2万没事, 多了就内存溢出
你的事务控制问题。
大量数据插入的时候,可以将数据量分批,每次事务提交一批。
例如:
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 excel poi 大数据量50W 内存溢出
50W数库EXCEL打开也有难度,建议导入CSV格式文件,或分多个文件。
关于内存溢出,注意以下几点:
1,分页分批从数据库里查询数据。
2,注意变量的释放,特别是LIST和MAP之类的引用,如果定义成全局变量或静态变量就会很难释放。
3,调大虚拟机内存大小。
java 1.txt中有50万个数据,数组限定大小为5000,请完成对50万个数据从小到大排序,保存到2.txt,希望有代码
这个问题建议你看一下归并排序,采取分而治之的方法。
1、将50万数据平均分成100份,写入100个小文件中
2、对100个文件中的数据分别排序
3、创建100个长度为40(之所以不是50是因为要预留20%的缓存区供后面排序使用)的数组,每次从100个文件中各读取40个数据放入100个数组中,然后从100个数组中找出最小的数,写入最终的文件中,并且从指定数组中删除该数据,当某个数组为空后再次从对应的文件中读取40个数据,直到所有小文件被读取完,排序完成!
百度一下结果很多,有源码可参考,给你提供一个思路,代码量太多就不写了。
java插入数据50万条的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java插入数据50万条的信息别忘了在本站进行查找喔。
发布于:2022-12-20,除非注明,否则均为
原创文章,转载请注明出处。