1

我正在尝试将 xml 文件导入 sql 服务器,但尚未成功。
xml 文件的结构如下:

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

但是,在处理完文件后,我看不到任何价值。有什么遗漏吗?

4

1 回答 1

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)别名两次的方法会引起混淆 - 尝试使用更有意义的东西而不是相同的别名。

于 2013-07-18T13:07:46.760 回答