Comment convertir des données stockées dans des fichiers XML dans une base de données relationnelle (MySQL)?
J'ai quelques fichiers XML contenant les données pour un projet de recherche dont j'ai besoin pour exécuter certaines statistiques. La quantité de données est proche de 100 GO.
La structure n'est pas si complexe (peut-être mappé à peut-être 10 tables dans un modèle relationnel), et compte tenu de la nature du problème, ces données ne seront jamais mis à jour à nouveau, je n'ai besoin qu'il soit disponible dans un endroit où il est facile d'exécuter des requêtes sur.
J'ai lu sur les bases de données XML, et la possibilité de l'exécution de XPATH style des requêtes sur elle, mais je n'ai jamais utilisé et je ne suis pas très à l'aise avec elle. Avoir les données dans une base de données relationnelle serait mon premier choix.
Donc, je suis à la recherche d'un moyen pour convertir les données stockées en XML dans une base de données relationnelle (penser à une grosse .fichier sql similaire à celui généré par mysqldump
, mais rien d'autre serait de le faire).
Le but ultime est de pouvoir exécuter des requêtes SQL pour traiter les données.
Après quelques recherches, je suis presque convaincu que je dois l'écrire sur mon propre.
Mais j'ai l'impression que c'est un problème commun, et par conséquent, il doit être un outil qui a déjà fait.
Donc, connaissez-vous un outil qui permettrait de transformer des données XML dans une base de données relationnelle?
PS1:
Mon idée serait quelque chose comme (il peut fonctionner différemment, mais juste pour s'assurer que vous obtenez mon point de vue):
- Analyser la structure de données (basé sur le XML eux-mêmes, ou sur un XSD)
- Construire la base de données relationnelle (tables, clés) basés sur cette structure
- Générer des instructions SQL pour créer la base de données
- Générer des instructions SQL pour créer remplir les données
PS2:
J'ai vu certains postes ici, dans la mais je ne pouvais pas trouver une solution.
Microsoft "Xml Chargement En Masse" outil semble faire quelque chose dans cette direction, mais je n'ai pas de MS SQL Server.
Vous devez vous connecter pour publier un commentaire.
Bases de données ne sont pas le seul moyen de données de recherche. Je la recommande fortement Apache Solr
Garder vos données brutes au format XML et de le rechercher à l'aide de l'index Solr
De l'importation de fichiers XML de le bon format dans une base de données MySql est facile:
https://dev.mysql.com/doc/refman/5.6/en/load-xml.html
Cela signifie, vous avez généralement à transformer vos données XML dans ce genre de format. Comment vous faites cela dépend de la complexité de la transformation, ce que les langages de programmation que vous connaissez, et si vous voulez utiliser XSLT (ce qui est le plus probablement une bonne idée).
À partir de votre ancien réponses, il semble que vous connaissez Python, donc http://xmlsoft.org/XSLT/python.html peut être la bonne chose pour vous de commencer avec.
Prendre un coup d'oeil à StAX au lieu de XSD pour l'analyse, d'extraction de données. Il est basé sur les flux et peut faire face à d'énormes fichiers XML.
Si vous vous sentez à l'aise avec Perl, j'ai eu d'assez bonne chance avec
XML::Twig
module pour le traitement de vraiment gros fichiers XML.Fondamentalement, vous avez besoin pour l'installation de quelques rameaux et des gestionnaires d'importer vos données dans MySQL à l'aide de
DBI
/DBD::mysql
.Il est assez bon exemple sur xmltwig.org.
Si vous à l'aise avec les produits commerciaux, vous pouvez avoir un coup d'oeil à Assistant de données pour MySQL par le SQL Maestro Groupe.
Cette application est spécialement destinées à l'exportation, et, bien sûr, de l'importation de données depuis/vers les bases de données MySQL. Ceci est également comprend importation XML. Vous pouvez télécharger un essai de 30 jours pour vérifier si c'est ce que vous cherchez.
Je dois avouer que je n'ai pas utiliser le MySQL en ligne de produits de encore, mais j'ai eu une bonne expérience de l'utilisateur avec leurs Firebird Maestro et SQLite Maestro produits.