Tengo un archivo XML de 15 GB que me gustaría dividir. Tiene aproximadamente 300 millones de líneas. No tiene ningún nodo superior que sea interdependiente. ¿Hay alguna herramienta disponible que haga esto fácilmente por mí?División XML de un archivo grande
Respuesta
Creo que tendrá que dividir manualmente a menos que esté interesado en hacerlo mediante programación. Here's a sample que hace eso, aunque no menciona el tamaño máximo de los archivos XML manejados. Al hacerlo manualmente, el primer problema que surge es cómo abrir el archivo.
Recomendaría un editor de texto muy simple, algo así como Vim. Al manejar archivos tan grandes, siempre es útil desactivar todas las formas de resaltado de sintaxis y/o plegado.
Otras opciones vale la pena considerar:
EditPadPro - Nunca lo he probado con nada de este tamaño, pero si es algo como otros productos JGsoft, debería funcionar como una brisa. Recuerde apagar el resaltado de sintaxis.
VEdit - Lo he usado con archivos de 1GB de tamaño, funciona como si no fuera nada en absoluto.
¿La muestra en el enlace provisto revisa las etiquetas? –
Si está preguntando sobre el enlace CodeProject, creo que inserta nodos Root al principio y al final de cada archivo dividido. – Cerebrus
Lamentablemente se ha bloqueado después de 750 MB –
No es una herramienta Xml, pero Ultraedit probablemente podría ayudar, lo he usado con archivos 2G y no me importó en absoluto, pero asegúrese de desactivar la función de copia de seguridad automática.
Necesito dividirlo –
He agregado una solución al elemento vinculado http://stackoverflow.com/questions/4325823/how-do-i-split-a-large-xml-file/ –
Aquí están las instrucciones de cómo usar UE para dividir un archivo grande http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/split-large-files.html – MrTelly
Aquí es una secuencia de comandos de bajo consumo de memoria para hacerlo en el editor XML firstObject libre (foxe) utilizando el modo de archivo CMarkup. No estoy seguro de lo que quiere decir con nodos superiores interdependientes, o control de etiquetas, pero suponiendo que bajo el elemento raíz tiene millones de elementos de nivel superior que contienen propiedades o filas de objetos que cada uno necesita mantenerse juntos como una unidad, y quería decir 1 millón por archivo de salida, usted puede hacer esto:
split_xml_15GB() { int nObjectCount = 0, nFileCount = 0; CMarkup xmlInput, xmlOutput; xmlInput.Open("15GB.xml", MDF_READFILE); xmlInput.FindElem(); // root str sRootTag = xmlInput.GetTagName(); xmlInput.IntoElem(); while (xmlInput.FindElem()) { if (nObjectCount == 0) { ++nFileCount; xmlOutput.Open("piece" + nFileCount + ".xml", MDF_WRITEFILE); xmlOutput.AddElem(sRootTag); xmlOutput.IntoElem(); } xmlOutput.AddSubDoc(xmlInput.GetSubDoc()); ++nObjectCount; if (nObjectCount == 1000000) { xmlOutput.Close(); nObjectCount = 0; } } if (nObjectCount) xmlOutput.Close(); xmlInput.Close(); return nFileCount; }
me ha enviado el vídeo de YouTube y el artículo sobre esto aquí:
¿de qué manera es lo que necesita dividirlo? Es bastante fácil escribir código usando XmlReader.ReadSubTree
. Devolverá una nueva instancia de xmlReader contra el elemento actual y todos sus elementos secundarios. Por lo tanto, vaya al primer hijo de la raíz, llame a ReadSubtree, escriba todos esos nodos, llame a Read() usando el lector original y bucle hasta que finalice.
XmlSplit - Una herramienta de línea de comandos que divide grandes archivos XML
xml_split - divide grandes documentos XML en trozos más pequeños
escisión que XML Bhayanak Maut (Sin código fuente y no pude conseguir éste trabajo)
Una pregunta similar: How do I split a large xml file?
Error # 16 que indica que se ha excedido el límite máximo de tamaño de archivo para 1 GB. ¿Cuál es el tamaño máximo que puede dividir? –
QXMLEdit tiene un dedicado función para eso: lo utilicé con éxito con un volcado de Wikipedia. El archivo ~ 2.7Gio se convirtió en un grupo de ~ 1 400 000 archivos (uno por página). Incluso le permite enviarlos en subcarpetas.
No sé por qué estabas abajo, esta es una herramienta de código abierto muy útil. – jeffmcneill
La coma de la biblioteca de código abierto tiene varias herramientas para buscar datos en archivos XMl muy grandes y para dividir esos archivos en archivos más pequeños.
https://github.com/acfr/comma/wiki/XML-Utilities
Las herramientas se construyeron usando el analizador SAX expatriados por lo que no llenan la memoria con un árbol DOM como xmlstarlet y Saxon.
me fallan en archivos mucho más pequeños (~ 1GB). – blueberryfields
xmlstarlet y saxon fallaron para nosotros también, por eso agregué las herramientas xml a la coma. –
Used this for splitting Yahoo Q&A dataset
count = 0
file_count = 1
with open('filepath') as f:
current_file = ""
for line in f:
current_file = current_file + line
if "</your tag to split>" in line:
count = count + 1
if count==50000:
current_file = current_file + "</endTag>"
with open('filepath/Split/file_' +str(file_count)+'.xml' , 'w') as split:
split.write(current_file)
file_count = file_count + 1
current_file = "<?xml version='1.0' encoding='UTF-8'?>\n<endTag>"
count = 0
current_file = current_file + "</endTag>"
with open('filepath/Split/file_' +str(file_count)+'.xml' , 'w') as split:
split.write(current_file)
- 1. División de un archivo XML grande en Python
- 2. RE: archivo XML grande
- 3. Consultas aleatorias en un archivo xml grande
- 4. Oracle: cargando un archivo xml grande
- 5. ¿Puede Python xml ElementTree analizar un archivo xml muy grande?
- 6. Cómo actualizar el archivo XML grande
- 7. análisis de un archivo xml grande con Python - etree.parse error
- 8. Trabajando con un archivo XML muy grande en C#
- 9. ¿Cómo escribir XML (grande) en un archivo en C#?
- 10. Datos en archivos XML: ¿Un archivo grande o varios pequeños?
- 11. ¿Qué tan grande es demasiado grande para un archivo XML de fuente RSS?
- 12. error de división por cero en el archivo .xml
- 13. División de un archivo en el delimitador
- 14. Haskell analizar el archivo xml grande con poca memoria
- 15. Buscar y reemplazar en un archivo grande
- 16. Validar un archivo XML ENORME
- 17. Incluyendo un archivo XML en un archivo XML/XSL
- 18. Descargando un archivo grande - SDK de iPhone
- 19. ¿Cómo puedo usar awk o Perl para incrementar un número en un archivo XML grande?
- 20. División de XML en varios archivos con XSLT
- 21. Agregar saltos de línea en un archivo XML grande en una línea
- 22. Cómo leer la transmisión de un archivo XML grande en C# 3.5
- 23. Analizando eficientemente un archivo de texto grande en C#
- 24. Escribir archivo grande
- 25. Procesando archivo xlsx grande
- 26. Modificar un archivo grande en Scala
- 27. Python: cortar un archivo binario muy grande
- 28. Buscar cadenas duplicadas en un archivo grande
- 29. seleccionar -primero 1 en un archivo grande
- 30. Dividir un archivo grande en C++
¿miró a vtd-xml para eso? –