Я просто не знаком с чтением в XML файле в таблицу через SQL Server Management Studio. Есть, вероятно, лучшие способы, но я хотел бы использовать этот подход.
В настоящее время я читаю стандартный XML файл записей о людях. Тег <record>
- это самый высокий уровень каждой строки данных. Я хочу прочитать все записи в отдельные строки в моей таблице SQL.
Я до сих пор хорошо разбираюсь, используя следующий подход:
SELECT
-- Record
category, editor, entered, subcategory, uid, updated,
-- Person
first_name, last_name, ssn, ei, title, POSITION,
FROM OPENXML(@hDoc, 'records/record/person/names')
WITH
(
-- Record
category [varchar](100) '../../@category',
editor [varchar](100) '../../@editor',
entered Datetime '../../@entered',
subcategory [varchar](100) '../../@subcategory',
uid BIGINT '../../@uid',
updated [varchar](100) '../../@updated',
-- Person
first_name [varchar](100) 'first_name',
last_name [varchar](100) 'last_name',
ssn [varchar](100) '../@ssn',
ei [varchar](100) '../@e-i',
title [varchar](100) '../title',
Position [varchar](100) '../position',
)
Однако этот подход отлично справился с тем, что имена тегов были уникальными для каждой записи/лица. Я имею тег <Person>
, у меня есть тег <Aliases>
, который содержит список из более чем 1 тегов <Alias> test name </Alias>
. Если я использую вышеуказанный подход и ссылаюсь на '../aliases', я получаю все элементы Alias как одну длинную строку String, смешанную вместе. Если я просто попробую '../aliases/alias' ТОЛЬКО первый элемент возвращается в каждую запись. Если в наборе тегов Aliases было 10 элементов Alias, я бы хотел, например, вернуть 10 строк.
Есть ли способ указать, что, когда в теге более высокого уровня есть несколько тегов с одним и тем же именем, верните их все, а не одну строку?
Ниже приведен пример блока в XML, на который я ссылаюсь:
- <aliases>
<alias>test 1</alias>
<alias>test 2</alias>
<alias>test 3</alias>
</aliases>
Я хотел бы следующее в таблице SQL:
Record Aliases
Record 1 test 1
Record 1 test 2
Record 1 test 3
Record 2 test 4
Record 2 test 5
но все, что я получаю, это:
Record 1 test 1
Record 2 test 4
Извините, если я не объяснил это правильно - любая помощь будет принята с благодарностью.