Primero, tuve un problema al obtener los datos de la base de datos, tomó demasiada memoria y falló. Configuré -Xmx1500M y estoy usando el ResultSet de desplazamiento para que se haya solucionado. Ahora necesito hacer un XML a partir de los datos, pero no puedo ponerlo en un solo archivo. En este momento, lo estoy haciendo así:¿Cómo puedo almacenar una gran cantidad de datos de una base de datos a XML (problema de memoria)?
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();
}
y funciona; Obtengo 12 archivos de 100 MB. Ahora, lo que quiero hacer es tener todos los datos en un archivo (que luego compruebo) pero si elimino la parte if, me quedo sin memoria. Pensé en tratar de escribir en un archivo, cerrarlo y luego abrirlo, pero eso no me ayudaría mucho ya que tendría que cargar el archivo en la memoria cuando lo abriera.
una forma de hacer esto sería: escribir en varios archivos xml usando xml api y luego combinar el contenido de todos los archivos utilizando el archivo de E/S? – Inv3r53