Java を使用して大きなテキスト ファイルを読み込んでいます。ファイルには 5.000.000 行があり、各行には 3 つの列があります。ファイルサイズは350MBです。
行ごとに読み取り、Maven で Criteria を使用してオブジェクトを作成し、session.saveOrUpdate(object) コマンドを使用して Postgresql データベースに保存します。
データベースには、シリアル ID とファイルの 3 つの列を格納する 3 つの属性を持つテーブルがあります。
最初は、プロセスは「高速」に実行されますが (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);
}