博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分批次读取csv文件,并保存到数据库
阅读量:4599 次
发布时间:2019-06-09

本文共 1339 字,大约阅读时间需要 4 分钟。

       读取上百万行的csv文件,由于数据量太大,一次性将csv的内容读取出来,保存在内存中,会导致内存严重吃不消,最后直接宕机,所以建议采取分批次读数据然后保存数据库中,以下是简单测试方法,可根据具体需求做修改。对大批量数据的操作,建议用jdbc直接批量添加,修改,删除等操作。

import java.util.List;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class ReadCsv {
public static void main(String[] args) throws FileNotFoundException{
File csv = new File("D:\\test.csv"); // CSV文件路径
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(csv));
String line = "";
while ((line = br.readLine()) != null){ //读取到的内容给line变量
while(getList(br)){}
}
} catch (IOException e){
e.printStackTrace();
}
}
public static boolean getList(BufferedReader br){
List<String[]> allString = new ArrayList<>();
boolean status = false;
String everyLine = "";
try {
int index = 0;
while((everyLine = br.readLine()) != null){
String [] strList = everyLine.split(",");
System.out.println(everyLine);
allString.add(strList);
index ++;
if(index == 3){
status = true;
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("总条数为:"+ allString.size());
//取值
for (int i = 0; i < allString.size(); i++) {
System.out.println(allString.get(i)[0]);
}
//这里做新增操作,保存到数据库。。。。。。
return status;
}
}

转载于:https://www.cnblogs.com/quying1019/p/7255990.html

你可能感兴趣的文章
洛谷 P1439 【模板】最长公共子序列(DP,LIS?)
查看>>
python timeit
查看>>
Wireless Network 并查集
查看>>
51nod 1019 逆序数
查看>>
20145202马超《JAVA》预备作业1
查看>>
云推送注意(MSDN链接)
查看>>
IDEA 生成 jar 包
查看>>
加减乘除混合版
查看>>
linux基础6-bash shell编程
查看>>
掌握这几种微服务模式助你成为更出色的工程师
查看>>
为什么很多语言选择在JVM上实现
查看>>
绘制dot 图
查看>>
CSS Reset CSS Framework
查看>>
如何用WinCC发送报警消息至微信
查看>>
LeetCode算法扫题系列19
查看>>
nginx获取经过层层代理后的客户端真实IP(使用正则匹配)
查看>>
YII实现dropDownList 联动事件
查看>>
搞定PHP面试 - 正则表达式知识点整理
查看>>
为什么JavaScript里面0.1+0.2 === 0.3是false
查看>>
freemarker 设置中文
查看>>