Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 12h03   #1
Rédacteur
 
Avatar de HULK
 
Inscription : juillet 2003
Messages : 1 212
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : juillet 2003
Messages : 1 212
Points : 1 039
Points : 1 039
Par défaut OPENXML avec plusieurs balises identiques

Bonjour,

je charge un fichier XML dans SQL SERVER grace à OPENXML.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
DECLARE @idoc int
SELECT @XMLdoc = '<?xml version="1.0"?> 
<TracePollData>
 <traces>
   <time>2011-09-14T19:46:07.043Z</time> 
	 <property>
	  <key>ATY</key> 
	  <value>LI</value> 
	  </property>
	 <property>
	  <key>TOTO</key> 
	  <value>TATA</value> 
	 </property>
 </traces>
</TracePollData> '
 
EXEC sp_xml_preparedocument @idoc OUTPUT, @XMLDoc
 
SELECT * FROM OPENXML (@idoc, 'TracePollData/traces')
WITH (time varchar(50) 'time', [KEY] varchar(15) 'property/key', value Varchar(15) 'property/value')
 
EXEC sp_xml_removedocument @idoc
Pour une balise "time", je peux avoir plusieurs balises property, dans le code ci dessus, j'en ai 2, mais le code me renvoi qu'une ligne :

2011-09-14T19:46:07.043Z ATY LI

J'aimerai qu'il me retourne 2 lignes :


2011-09-14T19:46:07.043Z ATY LI
2011-09-14T19:46:07.043Z TOTO TATA


Comment faire ?

Merci
__________________
j'suis vert !
HULK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 14h05   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 958
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 958
Points : 17 789
Points : 17 789
Un simple problème Xquery. Avec votre syntaxe vous ne vous intéressez qu'à l'élément de position 1.
Pour utiliser les autres, précisez le singleton.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 15h34   #3
Rédacteur
 
Avatar de HULK
 
Inscription : juillet 2003
Messages : 1 212
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : juillet 2003
Messages : 1 212
Points : 1 039
Points : 1 039
J'ai rien compris mais ca m'a aidé ! J'ai modifié ma syntaxe et ca fonctionne, je ne sais pas si c'est ce que vous vouliez dire

merci M'sieur

Code :
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
 
DECLARE @XMLdoc XML
DECLARE @idoc int
SELECT @XMLdoc = '<?xml version="1.0"?> 
<TracePollData>
 <traces>
   <time>2011-09-14T19:46:07.043Z</time> 
	 <property>
	  <key>ATY</key> 
	  <value>LI</value> 
	  </property>
	 <property>
	  <key>TOTO</key> 
	  <value>TATA</value> 
	 </property>
 </traces>
</TracePollData> '
 
EXEC sp_xml_preparedocument @idoc OUTPUT, @XMLDoc
 
SELECT * FROM OPENXML (@idoc, 'TracePollData/traces/property')
WITH (
time varchar(50) '../time', 
[KEY] varchar(15) 'key', 
value Varchar(15) 'value')
 
EXEC sp_xml_removedocument @idoc
__________________
j'suis vert !
HULK est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web