के साथ जितनी जल्दी संभव हो सके डेटा डालने के लिए मैंने फ़ाइल पढ़ी और उससे ऑब्जेक्ट बनाया और पोस्टग्रेस्क्ल डेटाबेस में स्टोर किया। मेरी फ़ाइल में 100,000 दस्तावेज़ हैं जो मैंने एक फ़ाइल से पढ़ा है और इसे विभाजित किया है और अंततः डेटाबेस में संग्रहीत है। मैं List<>
नहीं बना सकता और सभी दस्तावेज़ों को List<>
में संग्रहीत नहीं कर सकता क्योंकि मेरी रैम कम है। डेटाबेस को पढ़ने और लिखने के लिए मेरा कोड नीचे दिया गया है। लेकिन मेरा जेवीएम हीप भरता है और अधिक दस्तावेज़ स्टोर करना जारी नहीं रख सकता है। डेटाबेस को कुशलता से फ़ाइल और स्टोर कैसे पढ़ा जाए।हाइबरनेट
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++;
}
शायद तुम 'StringBuilder wholeDocument = नए StringBuilder() जोड़ने की जरूरत है, अपने छोरों –
माध्यम से अंदर' कहीं, stringbuilder परिवर्तनशील, तो आप इस 'wholeDocument = wholeDocument.append क्या करने की जरूरत नहीं है कर रहे हैं (" \ n "+ लाइन); ', बस' wholeDocument.append (" \ n "+ line) का उपयोग करें;' –
'प्रतिबद्ध()' क्या करता है? –