XML数据加载到SQL Server特殊XML格式中

时间:2018-08-24 13:31:52

标签: sql sql-server xml openrowset

好的,所以我试图将一个大型的复杂XML文件加载到多个表中。我试图向下钻取到最小的节点之一,但随后无法访问其上方的节点。

use [ChaseDB]
DECLARE @x XML, @hdoc int, @Path varchar(1000), 
@SegmentNotePath varchar(1000)
SELECT @x=P 
FROM OPENROWSET (BULK 'C:\XML\XmlFilePractice.xml', SINGLE_BLOB) as 
Products(P)

EXEC sp_xml_preparedocument @hdoc OUTPUT, @x

SET @Path= 'Root/Segment/OtherNode/SpecificNode'
SELECT * INTO #TempTable
FROM OPENXML(@hdoc, @Path, 2)
WITH(
    SegmentID varchar(20) '../../@ID',
    SegmentName varchar(1000) '../../@Name',
    Note varchar(1000)'Note',
    NoteType varchar(50) '@Type',
    SpecificNode int '@ID',
)

让我们说XML是这样的:

<Root>
    <Segment ID="AS" Name="Amper Sands">
            <Notes>
                <Note></Note>
            </Notes>
            <OtherNode>
                <SpecificNode></SpecificNode>
            </OtherNode>
    </Segment>
 <Root>

因此,如果我的路径设置为SpecificNode,该如何访问Note?我知道您可以使用../../备份节点,但是可以这么说如何备份和追溯。

SET @Path= 'Root/Segment/OtherNode/SpecificNode'

0 个答案:

没有答案