2012-08-16 4 views
1

J'ai une base de données en XML, dont j'ai besoin d'exporter vers SQL Server DB. Donc, je peux exporter xml tel que: tag = "valeur" Mais mon XML est: <tag>value</tag>.tag = "valeur" et <tag> valeur</tag>

Ma requête:

DECLARE @tempTable TABLE (
userId INT, 
userName NVARCHAR(50), 
password NVARCHAR(50) 
) 
DECLARE @xml XML 
SET @xml="my_XML" 

INSERT INTO @tempTable<br /> 
SELECT Tbl.Col.value('@userId', 'INT'),<br /> 
     Tbl.Col.value('@userName', 'NVARCHAR(50)'),<br /> 
     Tbl.Col.value('@password', 'NVARCHAR(50)')<br /> 
FROM @xml.nodes('//row') Tbl(Col) 

SELECT * FROM @tempTable 

Puis-je convertir premier cas au second cas? Ou peut-être existe-t-il un autre moyen?

Exemple de données XML:

<row> 
<userId>1</userId> 
<userName>Alpha</userName> 
<password>1234</password> 
</row> 
<row> 
<userId>2</userId> 
<userName>Beta</userName> 
<password>5678</password> 
</row> 

Lorsque je tente d'importer, je reçois datatable avec 2 lignes avec des cellules NULL.

+0

Il serait utile si vous avez posté un échantillon de vos données XML. –

Répondre

1

Alors vous voulez ...?

SELECT Tbl.Col.value('userId[1]','int'), 
Tbl.Col.value('userName[1]', 'NVARCHAR(50)'), 
Tbl.Col.value('password[1]', 'NVARCHAR(50)') 
FROM @xml.nodes('//row') Tbl(Col) 
+0

merci! c'est ce dont j'ai besoin. –