我正在使用 Java 读取一个大文本文件。该文件有 5.000.000 行,每行有 3 列。文件大小为 350 MB。
对于每一行,我阅读它,使用 Maven 上的 Criteria 创建一个对象,然后使用 session.saveOrUpdate(object) 命令将其存储到 Postgresql 数据库中。
在数据库中,我有一个带有序列 ID 和三个属性的表,其中存储了文件的三列。
一开始,进程运行“快”(30 分钟内 35.000 个寄存器),但每次都较慢,完成时间呈指数增长。我怎样才能改进这个过程?
我曾尝试将大文件拆分为几个较小的文件,但速度几乎较慢。
提前谢谢了!
PD:代码
public void process(){
File archivo = null;
FileReader fr = null;
BufferedReader br = null;
String linea;
String [] columna;
try{
archivo = new File ("/home/josealopez/Escritorio/file.txt");
fr = new FileReader (archivo);
br = new BufferedReader(fr);
while((linea=br.readLine())!=null){
columna = linea.split(";");
saveIntoBBDD(columna[0],columna[1],columna[2]);
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
if( null != fr ){
fr.close();
}
}
catch (Exception e2){
e2.printStackTrace();
}
}
}
@CommitAfter
public void saveIntoBBDD(String lon, String lat, String met){
Object b = new Object();
b.setLon(Double.parseDouble(lon));
b.setLat(Double.parseDouble(lat));
b.setMeters(Double.parseDouble(met));
session.saveOrUpdate(b);
}