java中的接口是类吗
558
2023-01-28
解决Java导入excel大量数据出现内存溢出的问题
问题:系统要求导入40万条excel数据,采用poi方式,服务器出现内存http://溢出情况。
解决方法:由于HSSFWorkbook workbook = new HSSFWorkbook(path)一次性将excel load到内存中导致内存不够。
故采用读取csv格式。由于csv的数据以x1,x2,x3形成,类似读取txt文档。
private BufferedReader bReader;
/**
* 执行文件入口
*/
public void execute() {
try {
if(!path.endsWith(".csv")){
logger.info("-----该文件不是以CSV文件,请上传正确的文件格式------");
return ;
}
Long startTime = System.currentTimeMillis();
logger.info("------开始执行定时任务,时间=" + startTime);
readCSV(path);
Long endTime = System.currentTimeMillis();
logger.info("------结束定时任务,时间=" + endTime + "---耗时="
+ (endTime - startTime));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 读取csv并处理数据
* @param path
* @throws Exception
*/
private void readCSV(String path) throws Exception {
File file = new File(path);
tryhttp:// {
bReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk"));
String line = "";
//忽略第一行标题
for (int i = 0; i < 1; i++) {
line = bReader.readLine();
}
while((line = bReader.readLine()) != null){
if (line.trim() != "") {
//分割开来的即是对应的每个单元格,注意空的情况
String[] result = line.split(",");
}
}
}
} finally {
if (bReader != null) {
bReader.close();
}
}
}
以上这篇解决java导入excel大量数据出现内存溢出的问题就是分享给大家的全部WdqsptJ内容了,希望能给大家一个参考,也希望大家多多支持我们。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~