分批次读取csv文件,并保存到数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分批次读取csv文件,并保存到数据库相关的知识,希望对你有一定的参考价值。

       读取上百万行的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;
}
}

以上是关于分批次读取csv文件,并保存到数据库的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow 批次读取文件内的数据,并将顺序随机化处理. --[python]

怎么用Python生成随机函数写入CSV文件,大佬们帮帮忙

处理 CSV 文件中的 JSON 对象并保存到 PySpark DataFrame

用c语言读取csv文件中的一列数据并求这些数据的平均值

读取CSV温度数据并可视化

macmatlab导入大型csv