L'importation de données XML dans SQL base de données
Je travaille avec un 20 gig fichier XML que j'aimerais l'importer dans une base de données SQL (de préférence MySQL, puisque c'est ce que je suis familier avec). Il semble que ce serait une tâche commune, mais après Googler un peu autour, je n'ai pas été en mesure de comprendre comment le faire. Quelle est la meilleure façon de le faire?
Je sais que cette capacité est intégrée dans MySQL 6.0, mais ce n'est pas une option à l'heure actuelle parce que c'est une alpha version de développement.
Aussi, si je dois faire aucun script, je préfère utiliser Python car c'est ce que je suis plus familier avec.
Grâce.
OriginalL'auteur Jacob Lyles | 2009-04-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le getiterator() pour itérer sur le fichier XML sans l'analyse de l'ensemble de la chose à la fois. Vous pouvez faire cela avec ElementTree, qui est inclus dans la bibliothèque standard, ou avec lxml.
OriginalL'auteur Ryan Ginstrom
Prendre un coup d'oeil à la
iterparse()
fonction deElementTree
oucElementTree
(je suppose que cElementTree serait mieux si vous pouvez l'utiliser)Cette pièce décrit plus ou moins ce que vous devez faire: http://effbot.org/zone/element-iterparse.htm#incremental-parsing
Ce sera probablement le moyen le plus efficace de le faire en Python. Assurez-vous de ne pas oublier d'appeler
.clear()
sur les éléments appropriés (vous vraiment ne veulent pas construire une mémoire de l'arbre de 20gig fichier xml: le.getiterator()
méthode décrite dans une autre réponse est un peu plus simple, mais ne exiger la totalité de l'arbre de première je suppose que l'affiche avait effectivementiterparse()
à l'esprit)OriginalL'auteur
J'ai fait cela plusieurs fois avec Python, mais jamais avec un gros fichier XML. ElementTree est une excellente bibliothèque XML pour Python qui pourrait être utile. Si c'était possible, je voudrais diviser un XML en fichiers plus petits pour le rendre plus facile à charger dans la mémoire et les analyser.
OriginalL'auteur Joel Hooks
Il peut être une tâche commune, mais peut-être 20 GO n'est pas aussi commun avec MySQL comme il est avec SQL Server.
J'ai fait cela à l'aide de SQL Server Integration Services et un peu de code personnalisé. Si vous avez besoin d'une de ces dépend de ce que vous devez faire avec 20 go de données XML dans une base de données. Est-ce que ça va être une seule colonne d'une ligne d'une table? Une ligne par élément enfant?
SQL Server a un type de données XML tout simplement si vous souhaitez stocker le XML XML. Ce type vous permet de faire des requêtes à l'aide de XQuery, vous permet de créer des index XML sur le XML, et permet à la colonne XML pour être "fortement typé" en se référant à un ensemble de schémas XML, vous permet de stocker dans la base de données.
OriginalL'auteur John Saunders
La Documentation de MySQL ne semble pas indiquer que le XML d'importation est limitée à la version 6. Apparemment, il fonctionne avec 5.
OriginalL'auteur bortzmeyer