J'ai un fichier XML de 15 Go que je voudrais diviser. Il contient environ 300 millions de lignes. Il n'y a pas de nœuds supérieurs qui sont interdépendants. Y a-t-il un outil disponible qui le fait facilement pour moi?Partage XML d'un fichier volumineux
Répondre
Je pense que vous devrez diviser manuellement sauf si vous êtes intéressé à le faire par programmation. Here's a sample qui fait cela, bien qu'il ne mentionne pas la taille maximale des fichiers XML gérés. Lorsque vous le faites manuellement, le premier problème qui se pose est de savoir comment ouvrir le fichier lui-même.
Je recommanderais un éditeur de texte très simple - quelque chose comme Vim. Lorsque vous manipulez de tels fichiers volumineux, il est toujours utile de désactiver toutes les formes de coloration syntaxique et/ou de pliage.
Autres options: utile d'envisager
EditPadPro - Je l'ai jamais essayé avec quoi que ce soit cette taille, mais si elle est quelque chose comme d'autres produits JGsoft, il devrait fonctionner comme un jeu d'enfant. N'oubliez pas de désactiver la coloration syntaxique.
VEdit - Je l'ai utilisé avec des fichiers de 1 Go, fonctionne comme si ce n'était rien du tout.
Est-ce que l'exemple du lien fourni permet de vérifier les tags? –
Si vous posez des questions sur le lien CodeProject, je pense qu'il insère des nœuds racines au début et à la fin de chaque fichier partagé. – Cerebrus
Malheureusement, il s'est écrasé après 750 Mo –
Pas un outil Xml mais Ultraedit pourrait probablement aider, je l'ai utilisé avec des fichiers 2G et cela ne dérangeait pas du tout, assurez-vous de désactiver la fonctionnalité de sauvegarde automatique cependant.
Je dois le diviser –
J'ai ajouté une solution sur l'élément lié http://stackoverflow.com/questions/4325823/how-do-i-plplit-a-large-xml-file/ –
Voici les instructions sur comment utiliser UE pour diviser un fichier volumineux http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/split-large-files.html – MrTelly
est ici un faible script empreinte mémoire de le faire dans l'éditeur XML firstobject gratuit (Foxe) en utilisant le mode de fichier CMarkup. Je ne suis pas sûr de ce que vous voulez dire par aucun nœud supérieur interdépendant, ou vérification de balise, mais en supposant que sous l'élément racine vous avez des millions d'éléments de haut niveau contenant des propriétés d'objet ou des lignes qui doivent être conservées ensemble. 1 million par fichier de sortie, vous pouvez le faire:
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; }
J'ai posté une vidéo sur youtube et article à ce sujet ici:
de quelle façon avez-vous besoin de le diviser? Il est assez facile d'écrire du code en utilisant XmlReader.ReadSubTree
. Il retournera une nouvelle instance de xmlReader par rapport à l'élément en cours et à tous ses éléments enfants. Donc, déplacez-vous au premier enfant de la racine, appelez ReadSubtree, écrivez tous ces nœuds, appelez Read() en utilisant le lecteur d'origine et bouclez jusqu'à ce que vous ayez fini.
XmlSplit - Un outil de ligne de commande qui divise Grande fichiers XML
xml_split - split énormes documents XML en petits morceaux
de Split que XML par bhayanakmaut (pas de code source et je ne pouvais pas obtenir celui de travail)
Une question similaire: How do I split a large xml file?
Erreur # 16 indiquant la limite de taille de fichier maximale dépassée pour le fichier de 1 Go. Quelle est la taille maximale qu'il peut diviser? –
QXMLEdit a dédié Fonction pour cela: Je l'ai utilisé avec succès avec un vidage Wikipédia. Le fichier ~ 2.7Gio est devenu un tas de ~ 1 400 000 fichiers (un par page). Il vous permet même de les envoyer dans des sous-dossiers.
Je ne sais pas pourquoi vous avez été downvoted, c'est un outil très utile, open source. – jeffmcneill
La virgule de la bibliothèque open source dispose de plusieurs outils pour rechercher des données dans de très gros fichiers XMl et pour les diviser en fichiers plus petits.
https://github.com/acfr/comma/wiki/XML-Utilities
Les outils ont été construits en utilisant l'analyseur SAX expatriés afin qu'ils ne remplissent la mémoire avec un arbre DOM comme xmlstarlet et Saxonne.
ceux-ci échouent pour moi sur des fichiers beaucoup plus petits (~ 1 Go). – blueberryfields
xmlstarlet et saxon ont échoué pour nous aussi c'est pourquoi j'ai ajouté les outils xml à la virgule. –
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. Longueur d'un fichier XML
- 2. Mon fichier journal est trop volumineux
- 3. créer et diffuser un document XML volumineux en C++
- 4. Erreur Axis2/JAX-WS lors d'unmarshalling fichier xml avec des éléments de texte volumineux
- 5. Recherche en ligne efficace et remplacement pour le fichier volumineux
- 6. Validation d'un énorme fichier XML
- 7. MSXML utilise wininet lors du chargement d'un fichier xml à partir d'un partage \\
- 8. Commande Unix unique pour transférer correctement un fichier volumineux?
- 9. Copier un fichier volumineux de l'iPhone vers le PC
- 10. Renommer des ID volumineux
- 11. Fractionner un gros fichier XML en Python
- 12. Append déclaration fichier XML
- 13. RE: Big fichier XML
- 14. Considérations d'architecture et de mise en cache avec des fichiers XML volumineux
- 15. Transfert de fichiers volumineux HTTP
- 16. Les fichiers volumineux Xml sont tronqués par MSXML4/FreeThreadedDOMDocument40 (string COM de numéro Interop)
- 17. Partage Memcache
- 18. Partage d'objets
- 19. Analyse textuelle de documents volumineux
- 20. Création d'un fichier XML dynamique
- 21. xml fichier dans le savon
- 22. Fichier de vue XML CakePHP
- 23. Comment générer un fichier XML
- 24. Erreur dans mon fichier XML?
- 25. fichier XML de charge QTP
- 26. Comment analyser un fichier XML
- 27. Big fichier XML et OutOfMemoryError
- 28. Javascript manipulant un fichier XML
- 29. Fichier de langage XML C#
- 30. comment accéder au fichier xml?
avez-vous regardé vtd-xml pour cela? –