Ich lese Datei und erstellen Sie ein Objekt von ihm und speichern in Postgresql-Datenbank. Meine Datei hat 100.000 Dokumente, die ich aus einer Datei gelesen und geteilt habe und schließlich in der Datenbank gespeichert habe. Ich kann List<>
nicht erstellen und alle Dokumente in List<>
speichern, weil mein RAM wenig ist. Mein Code zum Lesen und Schreiben in die Datenbank lautet wie folgt. Aber My JVM Heap füllt und kann nicht mehr Dokumente speichern. Wie man Datei liest und effektiv in der Datenbank speichert.Wie Sie Daten mit Hibernate so schnell wie möglich einfügen
public void readFile() {
StringBuilder wholeDocument = new StringBuilder();
try {
bufferedReader = new BufferedReader(new FileReader(files));
String line;
int count = 0;
while ((line = bufferedReader.readLine()) != null) {
if (line.contains("<page>")) {
wholeDocument.append(line);
while ((line = bufferedReader.readLine()) != null) {
wholeDocument = wholeDocument.append("\n" + line);
if (line.contains("</page>")) {
System.out.println(count++);
addBodyToDatabase(wholeDocument.toString());
wholeDocument.setLength(0);
break;
}
}
}
}
wikiParser.commit();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void addBodyToDatabase(String wholeContent) {
Page page = new Page(new Timestamp(System.currentTimeMillis()),
wholeContent);
database.addPageToDatabase(page);
}
public static int counter = 1;
public void addPageToDatabase(Page page) {
session.save(page);
if (counter % 3000 == 0) {
commit();
}
counter++;
}
Vielleicht brauchen Sie 'String wholeDocument = new Stringbuilder() hinzuzufügen;' irgendwo in Ihrem Schleifen –
durch die Art und Weise, String wandelbar sind, brauchen Sie nicht diese 'wholeDocument = wholeDocument.append zu tun (“ \ n "+ line);', verwende einfach 'wholeDocument.append (" \ n "+ Zeile);' –
Was macht 'commit()'? –