1. 程式人生 > >分批次讀取csv文件,並保存到數據庫

分批次讀取csv文件,並保存到數據庫

嚴重 保存 批量 urn split exception pri 讀取 spl

讀取上百萬行的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文件,並保存到數據庫