सबसे पहले, मुझे डेटाबेस से डेटा प्राप्त करने में कोई समस्या थी, इसमें बहुत अधिक स्मृति और असफल रहा। मैंने -Xmx1500M सेट किया है और मैं स्क्रॉलिंग परिणाम का उपयोग कर रहा हूं ताकि इसका ख्याल रखा जा सके। अब मुझे डेटा से एक्सएमएल बनाना है, लेकिन मैं इसे एक फाइल में नहीं डाल सकता। फिलहाल, मैं इसे इस तरह कर रहा हूं:मैं डेटाबेस से बड़ी मात्रा में डेटा को एक्सएमएल (मेमोरी समस्या) में कैसे स्टोर कर सकता हूं?
while(rs.next()){
i++;
xmlStringBuilder.append("\n\t<row>");
xmlStringBuilder.append("\n\t\t<ID>" + Util.transformToHTML(rs.getInt("id")) + "</ID>");
xmlStringBuilder.append("\n\t\t<JED_ID>" + Util.transformToHTML(rs.getInt("jed_id")) + "</JED_ID>");
xmlStringBuilder.append("\n\t\t<IME_PJ>" + Util.transformToHTML(rs.getString("ime_pj")) + "</IME_PJ>");
//etc.
xmlStringBuilder.append("\n\t</row>");
if (i%100000 == 0){
//stores the data to a file with the name i.xml
storeKBR(xmlStringBuilder.toString(),i);
xmlStringBuilder= null;
xmlStringBuilder= new StringBuilder();
}
और यह काम करता है; मुझे 12 100 एमबी फाइलें मिलती हैं। अब, मैं क्या करना चाहता हूं वह है कि वह डेटा एक फ़ाइल में है (जिसे मैं तब संपीड़ित करता हूं) लेकिन यदि केवल भाग को हटा दें, तो मैं स्मृति से बाहर हूं। मैंने एक फाइल को लिखने, इसे बंद करने, फिर खोलने की कोशिश करने के बारे में सोचा, लेकिन मुझे यह बहुत कुछ नहीं मिलेगा क्योंकि जब मैं इसे खोलता हूं तो मुझे फ़ाइल को स्मृति में लोड करना होगा।
ऐसा करने का एक तरीका होगा - xml एपीआई का उपयोग करके एकाधिक एक्सएमएल फाइलों को लिखना और फिर फ़ाइल I/o का उपयोग कर सभी फाइलों की सामग्री मर्ज करें? – Inv3r53