İlk olarak, Veritabanından veri almakla ilgili bir sorun yaşadım, çok fazla bellek aldı ve başarısız oldu. -Xmx1500M'yi ayarlıyorum ve kaydımlı ResultSet kullanıyorum, bu yüzden halledildi. Şimdi verilerden bir XML almam gerekiyor, ancak bir dosyaya koyamıyorum. Şu anda bunu şu şekilde yapıyorum:Büyük miktarda veriyi veritabanından XML'e (bellek sorunu) nasıl kaydedebilirim?
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();
}
ve çalışıyor; 12 100 MB dosya alıyorum. Şimdi, yapmak istediğim şey, tüm bu verilere tek bir dosyada sahip olmaktır (ki daha sonra sıkıştırıyorum) ama eğer parçayı kaldırırsam, bellekten çıkarım. Bir dosyaya yazmayı, kapatmayı, sonra açmayı düşündüm ama açıldığımda dosyayı belleğe yüklemek zorunda kalmamdan çok fazla şey almazdı.
Bunu yapmanın bir yolu - xml api kullanarak birden fazla xml dosyasına yazı yazmak ve daha sonra dosya i/o kullanarak tüm dosyaların içeriğini birleştirmek olurdu? – Inv3r53