Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Мета роботи :: 1) опанувати перетворення даних із структури XML документу у записи таблиці SQL Server .



Лабораторна робота №2

Мета роботи:: 1) опанувати перетворення даних із структури XML документу у записи таблиці SQL Server.

2) вивчення особливостей синтаксису SQL інструкції Select FROM OPENXML

Завдання.

Записати у змінну XML структуру у якій дані зберігаються у вигляді атрибутів. Створити таблиці бази даних для збереження даних XML. Виконати заповнення таблиці бази даними XML структури.

Виконання лабораторної роботи складається з двох частин.

Перша частина – це дослідження особливостей інструкції Select FROM OPENXML за наведеною інструкцією.

Друга частинна– це виконання самостійних завдань.

 

Послідовність виконання.

1.Створити структури таблиць для збереження даних, що будуть отримані отриманих з XML (структур) документів.

Схеми таблиць задані наведеними нижче запитами Data Definition Language (DDL) рис1, рис2.

Рис.1. Струкдура таблиці «Довідник товарів»

Рис.2. Струкдура таблиці «Довідник цін»

2) Оголосити змінні, що будуть використовуватися в системних процедурах sp_xml_preparedocument та sp_xml_removedocument @DocHandle та в інструкції SQL при читанні XML структури

Змінна @ DocHandle – повинна мати цілочисельний формат і буде зберігати дескриптор XML. Цей дескриптор, ідентифікує XML документ на SQL сервері. Значення дескриптора формується при виконанні процедури sp_xml_preparedocument.

Ця змінна @doc буде зберігати текст XML документа.

Записати у змінну дані, що аналогічні до даних, що зберігаеться в таблиці Products.

Зауваження. При вконанні лабораторної роботи №1 розглядалось вивантаження з реляційної таблиці даних у XML. На рис.3 наведенний результат такого вивантаження – XML структура з даними у вигляді атрибутів.

Рис.3 Результат вивантаження інструкцією Select FOR XML

Необхыдно відмітити, що заження даних з такої структури є неможливим, так як коректно сформований XML документ, повинен обовязково містити тільки один кореневий документ. На рис.4. наведена модифікована структура XML документа, що зберігаеться у змінній doc, та містить кореневий елемент. В якості кореневого елемента будемо використовувати елемент ROOT. (

Рис.4.

3) Запустити на виконання системну процедуру sp_xml_preparedocument (рис.5)

Рис.5. Синтаксис системної процедури sp_xml_preparedocument

.

Утіліта sp_xml_preparedocument використовує аналізатор Microsoft XML, що виконує паркінг XML документа та використовує три параметра, дескритор XML документа, змінну, що містить текст XML документа та параметр, що мвстить постір імен. Цей параметр не є обов’язковим.



4) Сформуємо SQL запит (рис.6) для отримання набору рядків реляційної таблиці на підставі XML документа

Рис.6. Sql інструкція

Розглянемо параметри OpenXML

Синтаксис:
OPENXML(DocHandle int [ in], rowpattern nvarchar [ in ], [ flags byte [ in ] ])

[ WITH (SchemaDeclaration | TableName) ]

· DocHandle -дескриптор XML-документа,

· rowpattern - вираз XPath для розпізнавання вузлів, які повинні бути зіставлені з рядками (rowpattern) у наведеному прикладі приймає значення '/ROOT/Products',

· flags опис схеми набору рядків, який повинен бути створений;

Цей параметр може приймати значення:

0 - За замовчуванням атрибутивне зіставлення

1- Використовуйте атрибутивне зіставлення. Може поєднуватися з XML_ELEMENTS. У цьому випадку, атрибутивне зіставлення застосовується в першу чергу, а потім виконується зіставлення з використанням елементів застосовується для всіх стовпців, які ще не розглядалися.

2- Використовуйте зіставлення з використанням елементів. Може поєднуватися з XML_ATTRIBUTES. У цьому випадку, атрибутивне зіставлення застосовується в першу чергу, а потім зіставлення з використанням елементів застосовується для всіх стовпців, які ще не оброблені.

8 - Може бути поєднане (логічне АБО) з XML_ATTRIBUTES або XML_ELEMENTS. У контексті пошуку, цей прапор вказує, що використовувані дані не повинні бути скопійовані в властивість переповнення @ MP: XmlText

· SchemaDeclaration | TableName зіставлення стовпців набору рядків і вузлів XML або імя таблиці бази даних.

5) Очистити пам’ять sp_xml_removedocument рис.7.

Рис.7. Синтаксис системної процедури sp_xml_ removedocument

Рис.8.

6)Змінемо у конструкції OPENXML опис схеми таблиці на назву таблиці.

Зверніть увагу!. Формат є чутливим до

регістру. Так як назва стовпчика IdProduct,

(рис.8),то в тексті XML документа потрібно

Замінити

назву елементаз IDProduct на IdProduct. Відповідно текст програми прийме вигляд (рис.8.)

Рис.8.

Запустити процедуру для звільнення пам’яті /

7)Змінемо текст XML документа так (рис.9), щоб значення були представлені в вигляді елементів.

 

Рис.9.

8) Створимо запит для запису структури у файл рис 10.

Рис.10.

9) Виконаемо парсинг XML документа, що містить дані довідника товарів та дані цін на товари. (рис.11) Дані представлені у вигляді елементів. у Увага у конструкції OPENXML парамет XPath буде містити шлях до елементів довідника товарів. (головна таблиці)

Рис.11. Фрагмент програмного коду, що містить XML документ з даними довідника товарів та довідника на товари

Рис.12. Фрагмент програмного коду, що містить SQL інструкцію з глахом до данних головної таблиці. якщо дані документа у вигляді елементів

Відмітимо, що такий запит не виконує пошук всіх цін, що повязані з кодом продукції, а виводить лише першу знайдену ціну.

10) Виконаемо парсинг цього ж XML документа змінивши в конструкції OPENXML параметр XPath таким чином, щоб він містив шлях до елементів довідника цін. (підлегла таблиця таблиці) рис13.

Рис.13. Фрагмент програмного коду, що містить SQL інструкцію з шляхом до данних підлеглої таблиці.Дані у документі знаходяться вигляді елементів.

 

Зверніть увагу на формування констркції With рис.12 та 13

11) Виконаемо парсинг XML документа, що містить дані довідника товарів та дані цін на товари. (рис.14) Дані представлені у вигляді атрибутів. у Увага у конструкції OPENXML парамет XPath буде містити шлях до елементів довідника товарів. (головна таблиці)

Рис.14. Фрагмент програмного коду, що містить XML документ з даними довідника товарів та довідника на товари. Данні у вигляді елементів

12) Виконаемо парсінг цього документа. (рис15)

Рис.15. Фрагмент програмного коду, що містить SQL інструкцію з шляхом до данних головної таблиці. якщо дані документа у вигляді атрибутів

Зверніть увагу на особливість співставлення полів таблиць та даних XML документа, а саме використання знаку @ перед іменем атрибуту документа

Так як і у пункті 9, цей запит не виконує пошук всіх цін, що повязані з кодом продукції, а виводить лише першу знайдену ціну.

13) Виконаемо парсинг цього ж XML документа змінивши в конструкції OPENXML параметр XPath таким чином, щоб він містив шлях до атрибутів довідника цін. (підлегла таблиця таблиці) рис.16.

Рис.16.Фрагмент програмного коду, що містить SQL інструкцію з шляхом до данних підлеглої таблиці.Дані у документі знаходяться вигляді елементів.

Завдання для самостійного виконання.

Завдання №1. Для наведенного нижче документа створити запит для перетворення з XML структури в рядки таблицю бази даних Price.

<ROOT>

<Price>

<IDProduct> 4 </IDProduct>

<TDate>2013-02-10</TDate>

<price>51</price>

</Price>

<Price>

<IDProduct> 4 </IDProduct>

<TDate>2013-02-10</TDate>

<price> 90 </price>

</Price>

</ROOT>'

Завдання для самостійного виконання.

Завдання 2.

Спроектувати структуру таблиць для запису даних з наведеної структури XML документа, сформувати SQL запит для запису даних з XML документа у таблиці бази даних.


Дата добавления: 2015-09-29; просмотров: 19 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Тиін қуыс ұясына 2 жаңғақ әкелді. Ертеңгі күні тағы да 3 жаңғақ алып келді. Тиінде барлығы неше жанғақ | Все мы на Острове Вечных Чудес

mybiblioteka.su - 2015-2024 год. (0.012 сек.)