none
Mapping de donnée XML dans une table SQL Server RRS feed

  • Question

  • Bonjour à tous !

    Je vous explique mon problème. Je souhaite intégrer des données provenant d'un fichier XML en base de données. Ce fichier contient à peu près 8 millions de lignes et est mis à jour tous les jours.
    J'ai aussi en ma possession le XSD correspondant définissant ma structure de base de données, et qui lui est mis à jour plus rarement (de l'ordre de 1 fois tous les 3 mois).

    Je recherche une solution afin de créer mon schéma de base de données à partir du XSD, et de renseigner les tables créées à partir du XML.

    La solution actuelle que j'essaie est de créer un DataSet typé via mon XSD et de le remplir grâce à mon XML via la méthode ReadXmlSchema() de mon DataSet typé.
    J'utilise la réflexion sur mon DataSet typé afin de récupérer le nom des tables et des colonnes créées via le XSD afin de créer les requêtes SQL correspondantes pour créer mon modèle de données en base.

    Cette solution me pose les problèmes ou les difficultés suivantes :
    - Le XSD n’est pas aux normes W3C (une table enfant peut-être en même temps la table parent par exemple ce qui est aberrant).
    - Beaucoup de lignes du XML sont à NULL.
    - Je ne retrouve pas toutes les informations de mon XML dans le DataSet.
    - Complexité du schéma de base.
    - 91 tables en base.
    - Identifiants créés automatiquement par le DataSet.

    Avez vous d'autres idées que celle là afin de bien renseigner le modèle de données et les informations qui vont avec ? Je pense notamment à Linq2SQL que je ne connais absolument pas.

    Toutes les idées sont les bienvenues, je suis preneur de tout :)
    mercredi 9 décembre 2009 10:35

Réponses

  • Bonjour,

    Pour importer ce gros fichier XML, il vous faudra utiliser plustot un XmlReader et lire à la main votre fichier XML élément par élément.
    Prévoyez des tests unitaires afin de faciliter la maintenance de votre code lors de la mise à jour du schéma.

    Cordialement
    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    mercredi 16 décembre 2009 21:17
    Modérateur

Toutes les réponses

  • Bonjour,

    Pour importer ce gros fichier XML, il vous faudra utiliser plustot un XmlReader et lire à la main votre fichier XML élément par élément.
    Prévoyez des tests unitaires afin de faciliter la maintenance de votre code lors de la mise à jour du schéma.

    Cordialement
    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    mercredi 16 décembre 2009 21:17
    Modérateur
  • As tu pensé à générer un fichier dbml a partir de ton xsd ou même du xml.
    Une fois celui-ci intégré dans VS, il génère tout le reste. Peut-être peut-on accéder au générateur en externe.
    Un ptit coup de compilateur...
    Et après "create database", il te créé d'un seul coup, ta base et toutes les structure de tables.
    Patrick


    ptournay
    jeudi 14 janvier 2010 19:37