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

Développement SQL Server Discussion :

load child node XML SQL server


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    dwh
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : dwh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut load child node XML SQL server
    Bonjour

    svp j ai un problème avec un fichier XML structuré comme suit 9plusieurs blocs avis)

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <avis>
        <numeroseao>167350</numeroseao>
        <numero>6501-07-0922</numero>
        <depenses>
          <depense>
            <datedepense>2018-10-22</datedepense>
            <datepublicationdepense>2019-05-31</datepublicationdepense>
            <montantdepense>233376.880000</montantdepense>
            <description>Dépassement relié à des variations de quantité et/ou des modifications au contrat de construction ou de services de nature technique</description>
            <nomcontractant>Gervais Dubé Inc</nomcontractant>
            <neqcontractant>1144441871</neqcontractant>
          </depense>
        </depenses>
      </avis>

    donc un numeroseao, numero peuvent être associé a une ou plusieurs dépenses

    en executer
    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
    SELECT
    	 MY_XML.avis.query('numeroseao').value('.', 'integer') as numeroseao,
         MY_XML.avis.query('numero').value('.', 'varchar(50)') as numero,
     
    	 Nodes.depense.query('datedepense').value('.', 'DATE') as datedepense,
         Nodes.depense.query('datepublicationdepense').value('.', 'DATE')as datepublicationdepense,
         Nodes.depense.query('montantdepense').value('.', 'decimal(18,6)')as montantdepense,
    	 Nodes.depense.query('description').value('.', 'varchar(150)') as description, 
         Nodes.depense.query('nomcontractant').value('.', 'varchar(150)')as nomcontractant,
         Nodes.depense.query('neqcontractant').value('.', 'varchar(150)')as neqcontractant
     
    FROM (SELECT CAST(MY_XML AS xml)
          FROM OPENROWSET(BULK 'C:\Users\Amal Ait Mehedine\Desktop\2019mai\Depenses_20190501_20190531.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML)
    	CROSS APPLY MY_XML.nodes('avis') AS MY_XML(avis)
    	CROSS APPLY MY_XML.nodes('avis/depenses/depense') AS Nodes(depense);
    j ai un produit cartesion, comment l éviter svp ,

    merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Pas lu en détail, mais je pense que le dernier CROSS APPLY doit repartir du noeud 'avis' plutôt que la racine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CROSS APPLY MY_XML.nodes('avis/depenses/depense') AS Nodes(depense);
    -->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CROSS APPLY avis.nodes('./depenses/depense') AS Nodes(depense);

  3. #3
    Membre averti
    Femme Profil pro
    dwh
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : dwh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Pas lu en détail, mais je pense que le dernier CROSS APPLY doit repartir du noeud 'avis' plutôt que la racine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CROSS APPLY MY_XML.nodes('avis/depenses/depense') AS Nodes(depense);
    -->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CROSS APPLY avis.nodes('./depenses/depense') AS Nodes(depense);

    Parfait ca a résolu mon problème, j ai une experience de 48h avec XML et SQL server , j ai essayé plusieurs combines sans succès
    Merci beaucoupppppppppp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Xml Sql Server et C#
    Par benny-blanco dans le forum C#
    Réponses: 3
    Dernier message: 22/08/2012, 13h03
  2. Oracle/XML > SQL Server
    Par Elbakin dans le forum Développement
    Réponses: 5
    Dernier message: 10/01/2011, 18h50
  3. Oracle/XML > SQL Server
    Par Elbakin dans le forum Réplications
    Réponses: 0
    Dernier message: 10/01/2011, 13h48
  4. import XML SQL SERVER
    Par chochatown dans le forum Développement
    Réponses: 6
    Dernier message: 05/05/2010, 10h16
  5. VB6 XML SQL Server
    Par charret2002 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/07/2007, 14h06

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