IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XQUERY/SGBD XML Discussion :

oracle: d'un fichier XML vers des tables relationnelles


Sujet :

XQUERY/SGBD XML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Antilles Néerlandaises

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Points : 8
    Points
    8
    Par défaut oracle: d'un fichier XML vers des tables relationnelles
    Bon j'ai vu beaucoup de sujets mais j'ai pas réussi

    Donc je veux bien voir un petit exemple avec oracle (sql) qui prend en entrée un fichier xml et génère des tables relationnelles.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu veux dire,

    - prendre n'importe quel XML, et bam, faire des tables relationnelles capables de contenir les mêmes données ?
    (=> Ce n'est pas possible, et ceux qui prétendent le faire ne gèrent que des cas très simples et le font très mal. Passer de XML à relationnel nécessite un protocole préétabli ou une compréhension humaine du sujet, case closed.)

    OU

    - tu cherches un format XML pour définir un schéma de base de données.
    (Moi j'en utilise pas, mais ça existe certainement.)

    'Faudrait qu'on sache de quoi tu parles.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Antilles Néerlandaises

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    En faite mon cas est de recevoir un fichier xml "bourré de données".
    et je dois l'enregistrer dans des tables préalablement créées .
    je crois que ce passage sera fait par des fichiers format XSLT

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui donc en gros tu as besoin de lire les données d'un fichier XML, d'une part, et les écrire dans une base de données, d'autre part.

    Talend est spécialisé dans ce genre de choses, mais je ne suis pas utilisateur moi-même (pas eu l'occasion.)

    Autre solution : apprendre à lire les données d'un fichier XML dans le langage de ton choix. Une fois que tu les a lues, tu sais sûrement déjà comment les enregistrer en base de données.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    La méthode la "plus simple" PL/SQL, va te demander de creer autant de flux dit de type canonique, que de table cible et oui cela se fera par xslt.
    Ensuite tu intégres ceci via procédure stockée.
    Une variante, avec un seul flux XML, c'est que tu crée un xml divisé en sous partie canonique , tu sélectionne une à une chaque partie canonique via XPath et tu insére

    Soit une table

    A | B | C
    -------------
    1 | | 2
    6 | 7 |
    7 | 8 | 9

    le fichier canonique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ROWSET>
    <ROW><A>1</A><C>2</C></ROW>
    <ROW><A>6</A><B>7</B></ROW>
    <ROW><A>7</A><B>8</B><C>9</C></ROW>
    </ROWSET>
    un exemple de procédure stockée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     PROCEDURE xml(
          p_xml_in XMLType,
          p_xsl_in XMLType) AS
     
     
          CURSOR c_xml
          IS
             SELECT EXTRACTVALUE (VALUE (d), 'sélection de la sous partie en xpath') laligne
             FROM   table (XMLSEQUENCE (EXTRACT (XMLType.transform(p_xml_in, p_xsl_in), '/*/ROWSET'))) d;
     
          v_context   DBMS_XMLStore.ctxType;
          v_rows      NUMBER;
          r_xml       c_xml%ROWTYPE;
     
       BEGIN
     
          -- debut de la boucle de parcours des lignes a insérer
          for r_xml in c_xml
          loop
     
             --ouverture du nouveau contexte
             v_context := DBMS_XMLSTORE.newContext ('nom de la table cible');
            -- insertion du xml
             v_rows    := DBMS_XMLSTORE.insertXML (v_context, r_xml.laLigne);
             -- fermeture du context
             DBMS_XMLStore.closeContext(v_context);
             -- validation de l'insert
             commit;
          end loop;
          -- fin de la boucle sur les tables
       exception
          when others
          then
             err_code := SQLCODE;
             err_msg  := SQLERRM;
             insert into ERR_DEBUG
             values('xml2W', err_code, err_msg);
             commit;
       END xml;

Discussions similaires

  1. Import de fichiers XML vers une table
    Par Emile87 dans le forum Oracle
    Réponses: 3
    Dernier message: 29/02/2012, 17h40
  2. Insertion de masse de fichier xml vers Oracle
    Par shaftJackson dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 10/03/2009, 17h52
  3. import fichier XML dans une table oracle 10g
    Par aijedelachance dans le forum Import/Export
    Réponses: 0
    Dernier message: 08/02/2009, 21h52
  4. envoyer des fichier xml vers le client
    Par fakhirov dans le forum Services Web
    Réponses: 1
    Dernier message: 18/02/2008, 16h53
  5. Réponses: 2
    Dernier message: 20/08/2007, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo