2013-07-18 86 views
1

我想導入一個xml文件到sql server沒有成功。
的XML文件的結構是這樣的:XML到SQL服務器

<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> 

我使用下面的代碼:

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); 

不過,我沒有看到任何值,則與處理文件完成後。有什麼遺漏嗎?

回答

6

這就像一個魅力對我來說:

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  

我認爲你是使用AS T(x)別名兩次的做法是造成混亂 - 嘗試使用更有意義,而不是相同的別名爲兩件事。

+2

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