Загрузка данных XML в специальный XML-формат SQL Server - PullRequest
0 голосов
/ 24 августа 2018

Хорошо, я пытаюсь загрузить большой сложный файл 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, как я могу получить доступ к Заметке? Я знаю, что вы можете создавать резервные копии узлов с помощью ../../, но как вы можете, так сказать, выполнять резервное копирование и детализацию.

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