Запрос данных XML из таблицы с типом данных XML

Цель этой статьи — помочь администраторам баз данных Microsoft SQL Server:

• Создать схему XML (XML Shema).
• Создайте таблицу с типом данных XML.
• Импортировать XML-файл в таблицу с типом данных XML.
• Запросить XML-файл.
• Выполните запрос к XML-файлу и выведите результат, аналогичный выходным данным команд инструкции Transact SQL.

Шаг 1

Сначала создайте файл C: XMLCustomer1.XML, как показано ниже. Этот XML-файл содержит данные, относящиеся к клиенту.

2007-03-31T06: 40: 38.0000000-05: 00
Джеймс. пивовар
1AE
A-доступный
761
Остановлен
30

2007-03-31T06: 40: 38.0000000-05: 00
Джеймс. пивовар
1AE
Не доступный
870
Остановлен
30

2007-03-31T06: 40: 38.0000000-05: 00
Джеймс. пивовар
1AE
A-доступный
97F
Начал
30

Шаг 2

Создайте базу данных (базу данных) и набор XML-схемы, как показано ниже:

ИСПОЛЬЗОВАТЬ [master] GO / ****** Объект: База данных [XMLTest] Дата сценария: 17.04.2007 01:49:43 ****** / ЕСЛИ СУЩЕСТВУЕТ (ВЫБРАТЬ имя ИЗ sys.databases, ГДЕ имя = N’XMLTest ‘) УДАЛИТЬ БАЗУ ДАННЫХ [XMLTest] перейти к созданию базы данных XMLTest перейти к использованию XMLTest Создать коллекцию схем XML XMLTrack как N » перейти

Примечание : обновление коллекции схем основано на ваших собственных данных в файле XML.

Шаг 3

Создайте таблицу с типом данных XML:

ИСПОЛЬЗОВАТЬ [XMLTest]
ИДТИ
/ ****** Объект: Таблица [dbo]. [XMLFiles] Дата сценария: 17.04.2007 02:07:52 ****** /
ЕСЛИ СУЩЕСТВУЕТ (ВЫБРАТЬ * ИЗ sys.objects ГДЕ object_id = OBJECT_ID (N ‘[dbo]. [XMLFiles]’) И введите (N’U’))
ТАБЛИЦА ПАДЕНИЯ [dbo]. [XMLFiles]

создать таблицу XMLFiles (Fileid int identity (1,1),
ImportedDate ограничение даты и времени xmldatestamp по умолчанию getdate (),
Имя файла varchar (500),
данные xml (XMLTrack))

<

p style=»text-align: justify;»>Шаг 4

Введите только что созданный XML-файл (C: XMLCustomer1.XML), используя openrowset работают, как показано ниже:

ИСПОЛЬЗОВАТЬ [XMLTest]
идти
ВСТАВИТЬ В XML-файлы (имя файла, ДАННЫЕ)
ВЫБЕРИТЕ ‘Customer1’ a, *
ОТ OPENROWSET (BULK ‘C: XMLCustomer1.xml’, SINGLE_CLOB)
как mytable
идти

Примечание : Ключевое слово SINGLE_BLOB импортирует весь XML-файл для столбца с типом данных XML.

Шаг 5

Выполните запрос к таблице XMLFiles, используя операции SQL, показанные ниже:

ИСПОЛЬЗОВАТЬ [XMLTest] выберите * из файлов XML, где FileId = 1, перейдите

Эта команда даст следующие результаты:

Изображение 1 запроса XML-данных из таблицы с типом данных XML

Рисунок 1.0

Когда вы нажимаете на данные, они также отображают данные XML (рисунок 1.1).

2007-03-3106: 40: 38.0000-05: 00 james.brewer 1AE A-Accessible 761 Остановлен 30 2007-03-31T06: 40: 38.0000000-05: 00 james.brewer 1AE Not-Accessible 870 Остановлен 30 2007-03- 31T06: 40: 3800000-05: 00 james.brewer 1AE A-Accessible 97F Запущено 30

Изображение 2 запроса XML-данных из таблицы с типом данных XML

Рисунок 1.1.

ШАГ 6

Теперь запросите данные XML из таблицы, чтобы создать транзакцию SQL в качестве набора результатов. Выполните программу XQuery, как показано ниже:

ВЫБРАТЬ
ref.value (‘Date’, ‘nvarchar (364)’) как [Date],
ref.value (‘пользователь’, ‘nvarchar (364)’) как [User],
ref.value (‘Userid’, ‘nvarchar (364)’) как [Userid],
ref.value (‘ls’, ‘nvarchar (364)’) как [ls],
ref.value (‘eqtid’, ‘nvarchar (364)’) как [eqtid],
ref.value (‘es’, ‘nvarchar (364)’) как [es],
ref.value (‘tp’, ‘nvarchar (364)’) как [tp]
ИЗ XML-файлов CROSS APPLY Data.nodes (‘// Customer / CustomerLogInfo’) R (ref)
где Fileid = 1

Программа выдаст результаты, показанные на рисунке 1.2:

Дата, Пользователь, ИД пользователя, ls, eqtid, es, tp 2007-03-3106: 40: 38.0000000-05: 00, james.brewer, 1AE, A-Accessible, 761, Остановлено, 30 2007-03-31T06: 40: 38.0000000-05: 00, james.brewer, 1AE, Not-Accessible, 870, Stopped, 30 2007-03-31T06: 40: 38.0000000-05: 00, james.brewer, 1AE, A-Accessible, 97F, Запущено, 30

Рисунок 3: Запрос данных XML из таблицы с типом данных XML

Рисунок 1.2.

Шаг 7.

Теперь повторите шаг 4 и повторно введите данные.

ИСПОЛЬЗОВАТЬ [XMLTest] перейти INSERT INTO XMLFiles (Filename, DATA) SELECT ‘Customer1’ a, * FROM OPENROWSET (BULK ‘C: XMLCustomer1.xml’, SINGLE_CLOB) as mytable go

Шаг 8

Запросите таблицу, как показано ниже:

ИСПОЛЬЗОВАТЬ [XMLTest] иди выберите * из XMLFiles иди

Результат:

Рисунок 4: Запрос данных XML из таблицы с типом данных XML

Рисунок 1.3.

Шаг 9

Чтобы отобразить все данные из обеих строк, мы можем написать запрос, как показано ниже:

ВЫБРАТЬ
ref.value (‘Date’, ‘nvarchar (364)’) как [Date],
ref.value (‘user’, ‘nvarchar (364)’) как [User],
ref.value (‘Userid’, ‘nvarchar (364)’) как [Userid],
ref.value (‘ls’, ‘nvarchar (364)’) как [ls],
ref.value (‘eqtid’, ‘nvarchar (364)’) как [eqtid],
ref.value (‘es’, ‘nvarchar (364)’) как [es],
ref.value (‘tp’, ‘nvarchar (364)’) как [tp]
ИЗ XML-файлов CROSS APPLY Data.nodes (‘// Customer / CustomerLogInfo’) R (ref)
где Fileid = 1
объединить все
ВЫБРАТЬ
ref.value (‘Date’, ‘nvarchar (364)’) как [Date],
ref.value (‘пользователь’, ‘nvarchar (364)’) как [User],
ref.value (‘Userid’, ‘nvarchar (364)’) как [Userid],
ref.value (‘ls’, ‘nvarchar (364)’) как [ls],
ref.value (‘eqtid’, ‘nvarchar (364)’) как [eqtid],
ref.value (‘es’, ‘nvarchar (364)’) как [es],
ref.value (‘tp’, ‘nvarchar (364)’) как [tp]
ИЗ XML-файлов CROSS APPLY Data.nodes (‘// Customer / CustomerLogInfo’) R (ref)
где Fileid = 2

Результаты представлены на Рисунке 1.4.

Дата, Пользователь, ИД пользователя, ls, eqtid, es, tp 2007-03-3106: 40: 38.0000000-05: 00, james.brewer, 1AE, A-Accessible, 761, Остановлено, 30 2007-03-31T06: 40: 38.0000000-05: 00, james.brewer, 1AE, Not-Accessible, 870, Stopped, 30 2007-03-31T06: 40: 38.0000000-05: 00, james.brewer, 1AE, A-Accessible, 97F, Запущено, 30 2007-03-3106: 40: 38.0000000-05: 00, james.brewer, 1AE, A-Accessible, 761, Stopped, 30 2007-03-31T06: 40: 38.0000000-05: 00, james.brewer, 1AE, Not -Доступно, 870, остановлено, 30 2007-03-31T06: 40: 38.0000000-05: 00, james.brewer, 1AE, A-Accessible, 97F, запущено, 30

Примечание: Если вы планируете отображать все данные из каждой строки с типом данных XML, вы можете создать хранимую процедуру с временной таблицей или указателем.

Рисунок 5: Запрос данных XML из таблицы с типом данных XML

Рисунок 1.4.

Заключить

В этой статье показано, как создать схему XML, создать таблицу с типом данных XML, импортировать файл XML в таблицу с типом данных XML, запросить файл XML и получить тот же результат, что и фактический набор результатов. отображается командами SQL Transact.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.