2013-07-18 3 views
1

J'essaye d'importer un fichier XML dans le serveur sql sans succès pour le moment.
Le fichier xml est structuré comme suit:XML To Sql Server

<Users xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <User> 
    <PartitionKey>be-BY</PartitionKey> 
    </User> 
</Users> 

J'utilise le code suivant:

SELECT 
    xmldata.value('(PartitionKey)[1]', 'NCHAR(10)') AS 'partition_key' 
FROM 
    (SELECT CAST(x AS XML) 
    FROM OPENROWSET(
     BULK 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\SkillageXML\userstest1111.xml', 
     SINGLE_BLOB 
     ) 
     AS T(x) 
    ) AS T(x) 
CROSS APPLY 
    x.nodes('/Users/User') AS X(xmldata); 

Cependant, je ne vois aucune valeur après avoir été fait avec le traitement du fichier. Est-ce qu'il manque quelque chose?

Répondre

6

Cela fonctionne comme un charme pour moi:

SELECT 
    XUsers.value('(PartitionKey)[1]', 'NCHAR(10)') AS 'partition_key' 
FROM 
    (SELECT 
     BulkXML = CAST(BulkColumn AS XML) 
    FROM 
     OPENROWSET(BULK 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\SkillageXML\userstest1111.xml', SINGLE_BLOB) AS BX 
    ) AS T 
CROSS APPLY 
    BulkXml.nodes('/Users/User') AS XTbl(XUsers);and returns: 

partition_key 
be-BY  

Je pense que vous êtes approche de l'utilisation des AS T(x) alias est deux fois une source de confusion - essayez d'utiliser quelque chose de plus significatif et non le même alias pour les deux choses.

+2

Utilisez [INSERT INTO ... SELECT FROM] (http://msdn.microsoft.com/en-us/library/ms188263 (v = sql.105) .aspx) – OzrenTkalcecKrznaric