ITA-101 Bazy Danych
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
Wersja 1.0
Praca z XML
Spis treści
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 2/15
Informacje o module
Opis modułu
Wymiana danych z relacyjnymi bazami danych może byd utrudniona ze
względu na różnice programowo – sprzętowe itp. Rozwiązaniem jest język
XML, który jest niezależny od standardów sprzętowych / programowych.
Cel modułu
Celem modułu jest zapoznanie się z możliwościami zastosowania języka
XML w MS SQL 2008.
Uzyskane kompetencje
Po zrealizowaniu modułu będziesz:
wiedzied, jak uzyskad dokument XML ze zwykłego wyniku zapytania
nauczysz się sterowad zapisem danych do dokumentu XML
będziesz umiał zapisad informacje z dokumentu XML do bazy danych
nauczysz się przeprowadzad walidację danych XML według zadanych
schematów
poznasz język XQuery, który umożliwia wykonywanie operacji na
danych XML
Wymagania wstępne
Przed przystąpieniem do pracy z tym modułem powinieneś:
wiedzied, jak używad oprogramowania Microsoft Virtual PC
znad podstawy obsługi systemu Windows 2000 lub nowszego
znad podstawy obsługi SQL Server Management Studio
Mapa zależności modułu
Zgodnie z mapą zależności przedstawioną na Rys. 1, istnieje koniecznośd
wykonania wcześniej modułu 3.
Moduł 11
Dodatek
Moduł 1
Moduł 2
Moduł 3
Moduł 4
Moduł 5
Moduł 6
Moduł 7
Moduł 8
Moduł 9
Moduł 10
Moduł 12
Moduł 13
Rys. 1 Mapa zależności modułu
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 3/15
Przygotowanie teoretyczne
Przykładowy problem
Firma National Insurance wykupiła niedawno udziały w mniejszej, prężnie działającej firmie
informatycznej Miracle. Ponieważ dział IT w Miracle używał innej architektury bazodanowej,
nastąpił problem z wymianą danych pomiędzy centralą a nowym oddziałem. Informatycy obydwu
oddziałów wpadli na pomysł użycia uniwersalnego języka XML do wymiany danych pomiędzy
platformami. Przed podjęciem stosownych działao dyrektor działu IT postanowił sprawdzid, co
oferuje system MS SQL Server 2008 w tym zakresie.
Podstawy teoretyczne
XML (ang. eXtensible Markup Language) jest językiem znaczników (jak HTML), w którym to
programista decyduje o tym, jaka będzie struktura znaczników. W ostatnich latach XML zyskał
ogromną popularnośd jako format idealny do wymiany danych między aplikacjami, nośnik
konfiguracji aplikacji, format zapisu danych. Znajomośd możliwości XML i standardów skojarzonych
jest dziś właściwie niezbędna nie tylko w pracy z bazami danych, ale również z technologiami
programistycznymi.
W dzisiejszym świecie informacja jest przechowywana w różnych formatach. Jednym z dośd często
spotykanych formatów jest XML. Oznacza to, że system bazodanowy powinny oferowad możliwośd
zapisu w swoich strukturach (w swoich bazach danych) danych przemieszanych ze znacznikami
XML.
Format danych
Każdy system bazodanowy oferuje bogaty zestaw typów danych. Wśród tych typów można znaleźd
sporo typów przechowujących tekst. Ponieważ XML jest formatem tekstowym, może byd
przechowywany jako tekst, ale typ danych, który w bazach danych ma służyd do przechowywania
danych XML, powinien charakteryzowad się czymś więcej niż tylko możliwością zapisu znaczników i
zaszytych w nich informacji.
Jedną z podstawowych właściwości dokumentu XML jest wymóg, który mówi, że dokument XML
musi posiadad odpowiednią formę. Oznacza to, że:
dokument ma jeden element główny (ang. root), w którym zawarte są pozostałe elementy
pojedynczy znacznik nie zawiera dwóch atrybutów o takiej samej nazwie
wartości atrybutów powinny znaleźd się w ogranicznikach (cudzysłowy lub apostrofy)
znaczniki nie powinny się „zazębiad”.
Poniższy listing ilustruje przykładowy fragment poprawnego dokument XML:
<panstwa>
<panstwo nazwa="Polska">
<stolica>Warszawa</stolica>
<obszar>312680</obszar>
<ludnosc>38456785</ludnosc>
<glowne_miasta>Wrocław</glowne_miasta>
<glowne_miasta>Gdańsk</glowne_miasta>
<glowne_miasta>Kraków</glowne_miasta>
<glowne_miasta>Poznań</glowne_miasta>
</panstwo>
<panstwo nazwa="Niemcy">
<stolica>Berlin</stolica>
<obszar>356910</obszar>
<ludnosc>81700000</ludnosc>
<glowne_miasta>Monachium</glowne_miasta>
</panstwo>
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 4/15
<panstwo nazwa="Czechy">
<stolica>Praga</stolica>
<obszar>78703</obszar>
<ludnosc>10300000</ludnosc>
</panstwo>
</panstwa>
Idealny format do przechowywania danych XML powinien zapewniad automatyczną kontrolę
poprawności zapisu danych.
Walidacja
Bardzo często struktura dokumentów XML jest w jednoznaczny sposób określona przy pomocy
innych standardów, takich jak XML Schema czy DTD (ang. Document Type Definition). Szczególnie
XML Schema jest doskonałym formatem opisującym struktury XML. Idealnie zatem byłoby, gdyby
system bazodanowy umożliwiał wykorzystanie standardów walidujących XML do kontroli struktury
danych zapisywanych w bazach danych.
MS SQL Server 2000 wprowadził możliwośd konwersji danych pobieranych z bazy do dokumentu
XML oraz danych z tych plików na wiersze bazy danych. Umożliwiają to słowa kluczowe języka
Transact-SQL:
FOR XML
OPENXML
MS SQL Server 2005 rozszerza możliwości w/w słów kluczowych, dzięki czemu można sterowad
sposobem tworzenia dokumentu XML (dokładne informacje w dokumentacji do tych poleceo).
Dodatkowo umożliwiono tworzenie natywnych typów danych XML pozwalających na tworzenie
własnych zmiennych oraz dodawanie kolumn do danych XML. Odpowiedzialne za to jest polecenie
CREATE XML SCHEMA COLLECTION (dokumentacja: http://msdn2.microsoft.com/en-
us/library/ms176009.aspx), a w połączeniu z XQuery (język pozwalający na pisanie zapytao
przeszukujących
dokumenty
XML,
dokumentacja:
http://msdn2.microsoft.com/en-
us/library/ms189075(SQL.100).aspx) pozwala na pisanie zapytao do treści XML, których wynik
także jest przedstawiony w dokumencie XML. Innym udoskonaleniem jest możliwośd nadania
indeksów kolumnom typu XML. Pozwala to na zwiększenie ogólnej wydajności.
MS SQL 2008 wprowadził dalsze udoskonalenia w zakresie walidacji danych. Dodano możliwośd
stworzenia schematu który może byd dopasowany do dowolnych danych. Dodano słowo kluczowe
let
do
XQuery
(podstawy
można
opanowad
na
bazując
na
tutorialach:
http://www.w3schools.com/xquery/default.asp) dzięki, któremu można przypisywad wartości do
zmiennych. Ponadto za pomocą XQuery można wykonywad operacje na danych XML za pomocą
insert, replace value of, delete, modify, a MS SQL Server 2008 pozwala na użycie danych
XML jako argumentu dla polecenia insert.
Przykładowe rozwiązanie
Rozpoczynając pracę z plikami XML należy zastanowid się jakie dane będziemy w nich
przechowywad. Dane z bazy wybieramy np.: poleceniem SELECT. Aby trafiły one do pliku XML na
koocu skryptu SQL należy dopisad sekwencję FOR XML z odpowiednimi parametrami. Przykładowo,
wybierając dane z tabeli Customers utworzenie pliku XML zapewni nam sekwencja
FOR XML RAW('Customer'), ELEMENTS, ROOT
Po uruchomieniu takiego kodu w Management Studio jako rezultat pojawi nam się odnośnik do
pliku XML tak jak pokazano na Rys. 2:
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 5/15
Rys. 2 Generowanie kodu XML
W tym momencie uzyskaliśmy wynik zapytania w postaci dokumentu XML. Klikając na odnośnik
możemy obejrzed strukturę pliku a następnie zapisad go jako zwykły plik systemowy. Znając
podstawy języka XML łatwo wprowadzad modyfikacje i rozbudowywad tego typu pliki nawet poza
środowiskiem bazodanowym. Wystarczy dysponowad dowolnym edytorem testu.
Rys. 3 Wyświetlenie kodu XML
Pracując z plikami XML zawsze należy zwracad uwagę na sposób kodowania znaków. Warto
wymusid odpowiednie kodowanie umieszczając na początku pliku następującą sekwencję
<?xml version="1.0" encoding="utf-16"?>
Co prawda same polecenia XML nie zawierają w swojej strukturze znaków narodowych ale dane
pojawiające się w plikach przeważnie takie posiadają. Aby uniknąd przekłamao rozsądnie
rozpocząd plik XML tak jak pokazano na rys 4.
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 6/15
Rys. 4 Dodanie tagu kodowania
W tym momencie posiadamy pełnowartościowy plik XML zawierający dane z naszej bazy. Tak
uzyskane dane można z łatwością przenieśd do innej bazy danych np. MySql, ponieważ zostały
zapisane w uniwersalnym formacie (należy jedynie pamiętad o odpowiednim kodowaniu znaków).
Isnieje możliwośd wyeksportowania do pliku XML bardziej złożonych danych. Poniższy kod SQL
wybierze wszystkie zamówienia, których ID_Klienta jest równe "ALFKI".
declare @CustomerID nchar(5)
select @CustomerID = 'ALFKI'
SELECT 1 as Tag,
NULL as Parent,
CustomerID as [Customer!1!customerid],
ContactName as [Customer!1],
NULL as [Order!2!orderid],
NULL as [Order!2]
FROM Customers
where Customers.CustomerID = @CustomerID
UNION
SELECT
2 as tag,
1 as parent,
Customers.CustomerID,
Customers.ContactName,
Orders.OrderID,
Orders.ShipAddress
FROM Customers, Orders
WHERE (Customers.CustomerID = @CustomerID)
AND (Customers.CustomerID = Orders.CustomerID)
FOR XML EXPLICIT
Możemy więc jasno i precyzyjnie określi interesujący nas zakres danych, który będzie
wyeksportowany z systemu bazodanowego.
Porównaj działanie polecenia FOR XML z atrybutami RAW, AUTO oraz PATH oraz atrybutami
ELEMENTS, ROOT (oraz bez tych opcji) i innymi zgodnie z dokumentacją na:
http://msdn2.microsoft.com/en-us/library/ms173812.aspx
Posiadając gotowy plik XML zawierający dane wyeksportowane z systemu bazodanowego możemy
w prosty sposób wczytad te dane do swojej bazy. W tym celu należy posłużyd się zmiennymi T-SQL
typu XML i wczytad do tak zadeklarowanej zmiennej dane ze wskazanego pliku. Taką operację
wykonuje przykładowy kod SQL:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:\pliczek.xml', CODEPAGE='utf-16',
SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 7/15
Wynikiem jest wczytana treśd wcześniej utworzonego pliku, znajdująca się w jednej kolumnie typu
XML co ilustruje rysunek 5.
Rys. 5 Wczytanie pliku XML
W operowaniu na danych XML pomocny jest XQuery, czyli język zapytao właśnie dla tego
typu dokumentów.
Do tej pory jedynie wyświetlaliśmy zawartośd wczytanego pliku XML. Nic nie stoi na przeszkodzie
aby za pomocą pliku mapującego dokonad jego zapisu w odpowiedniej tabeli bazy danych. Plik
mapujący odzwierciedla dane z pliku XML na tabele w przykładowej bazie Northwind:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="CustomerID" dt:type="string" />
<ElementType name="CompanyName" dt:type="string" />
<ElementType name="City" dt:type="string" />
<ElementType name="ROOT" sql:is-constant="1">
<element type="Customer" />
</ElementType>
<ElementType name="Customer" sql:relation="Customers">
<element type="CustomerID" sql:field="CustomerId" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
</ElementType>
</Schema>
Pozostaje nam tylko stworzyd odpowiedni skrypt Visual Basic, który zrealizuje wstawianie danych
do bazy według zadanego wcześniej schematu:
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
objBL.ConnectionString = "Provider=SQLOLEDB;Data Source=EVALUATION;Initial
Catalog=Northwind;Integrated Security=SSPI;"
objBL.ErrorLogFile = "c:\error.log"
objBL.Execute "c:\customersmapping.xml", "c:\customers.xml"
Set objBL = Nothing
Skrypt połączy się z naszym serwerem bazodanowym a następnie wykona zapytania SQL zgodnie z
plikami XML co ilustruje rysunek 6.
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 8/15
Rys. 6 Wynik zapytania do bazy po aktualizacji danych
Porady praktyczne
Praca z plikami XML może byd wydajna i przyjemna. Warto jednak zaznaczyd, że szczególnie
początkujący użytkownicy mogą popełniad drobne, ale męczące błędy związane głównie z
nieścisłościami w nazewnictwie:
Zawsze sprawdzaj poprawnośd nazw wszelkich plików i ich ścieżek dostępu. Często
niemożnośd zlokalizowania pliku skutkuje komunikatami o innych błędach.
Poprawne określenie kodowania zapobiega przekłamaniom w obróbce danych. Czasami złe
kodowanie w ogóle wyklucza wykonanie danej operacji.
Dowiedź się nieco więcej o podstawach programowania w VBscript. Jest to bardzo prosty,
obiektowy język programowania, wykorzystywany w budowie skryptów.
Czytaj uważnie dziennik błędów. W większości przypadków dziennik wskazuje na poprawne
rozwiązanie problemu.
Uwagi dla studenta
Jesteś przygotowany do realizacji laboratorium jeśli:
rozumiesz, czym różni się język XML od HTML
rozumiesz zasadę działania struktury XML Schema
umiesz zdefiniowad przykładową strukturę pliku XML
umiesz podad przykład zastosowania narzędzia XQuery.
Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów.
Dodatkowe źródła informacji
1. William R. Stanek, Microsoft XML – Vademecum, Microsoft Press, 2002
2. Elizabeth Castro, Po prostu XML, Helion, 2001
3. Priscilla Walmsley, Wszystko o XML Schema, WNT, 2007
4. Przemysław Kozienko, Krzysztof Gwiazda, XML na poważnie, Helion, 2002
5. Scott Short , Zastosowanie XML do tworzenia usług internetowych na platformie Microsoft .NET,
Microsoft Press 2003
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 9/15
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Jesteś administratorem systemu bazodanowego w firmie National Insurance. Twój szef zlecił Ci
rozpoznanie możliwości płynących z użycia języka XML w systemie MS SQL Server 2008. W
pierwszej kolejności postanowiłeś użyd narzędzi dostępnych w systemie na roboczym serwerze
Evaluation i sprawdzonej bazie danych Northwind.
Zadanie
Tok postępowania
1. Nawiązywanie
połączenia z SQL
Server 2008
Zaloguj się do maszyny wirtualnej BD jako użytkownik Administrator z
hasłem P@ssw0rd.
Kliknij Start. Z grupy programów Microsoft SQL Server 2008 uruchom
SQL Server Management Studio.
W oknie logowania kliknij Connect.
2. Wygenerowan
ie pliku XML na
podstawie danych
z bazy
W oknie Object Explorer rozwio listę tabel bazy danych
Northwind -> Databases -> Tables.
Kliknij prawym klawiszem myszki tabelę Customers i wybierz opcję
Select Top 1000 Rows.
Rys. 7 Wybieranie danych z bazy Northwind
W okienku, które się pokaże, zamieo wartośd 1000 na 10 (nie potrzeba
tyle danych do testów), a na samym koocu skryptu dopisz:
FOR XML RAW('Customer'), ELEMENTS, ROOT
wykonaj zapytanie klikając przycisk Execute.
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 10/15
Rys. 8 Generowanie kodu XML
Kliknij na odnośnik <Root><Customer>… w celu otwarcia okna z kodem
XML.
Rys. 9 Wyświetlenie kodu XML
zapisz ten wynik do pliku: c:\customers.xml klikając na menu File->Save
As.
Możesz otworzyd plik w przeglądarce, aby zobaczyd jego strukturę,
jednak zanim to zrobisz, dopisz na samym początku, najlepiej w
edytorze w MS SQL, następującą linię:
<?xml version="1.0" encoding="utf-16"?>
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 11/15
Rys. 10 Dodanie tagu kodowania
zamknij utworzone zapytania w głównym oknie Management Studio
3. Wczytanie
danych XML do
MS SQL
Kliknij przycisk NewQuery.
Wpisz następujący kod SQL do nowego okna zapytania:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK
'C:\customers.xml', CODEPAGE='utf-16', SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc
Kliknij przycisk Execute.
Rys. 11 Wczytanie pliku XML
Jeśli nie można wczytad pliku albo na początku treści pojawiają się
tzw. „krzaczki”, to proszę się cofnąd do momentu zapisu i zamiast
przez edytor z MSSQL, proszę zapisad metodą kopiowania i wklejania
treści dokumentu XML do notatnika
4. Odczyt danych
XML - poruszanie
się po drzewie
danych
W operowaniu na danych XML pomocny jest XQuery, czyli język
zapytao właśnie dla tego typu dokumentów.
Zmieo zapytanie SQL z poprzedniego zadania na następujące:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK
'C:\customers.xml', CODEPAGE='utf-16', SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc.query(
'<Customers>
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 12/15
{
for $i in /root/Customer
where $i/Country="Mexico"
return
<Order>
{$i/CompanyName}
</Order>
}
</Customers>'
)
Uruchom zapytanie klikając przycisk Execute.
Kliknij na odnośnik do kodu XML.
Rys. 12 Generowanie kodu XML
5. Eksport
wybranych
danych do pliku
XML
Kliknij przycisk NewQuery.
W nowym oknie wpisz następujący kod SQL:
use Northwind
declare @CustomerID nchar(5)
select @CustomerID = 'ALFKI'
SELECT 1 as Tag,
NULL as Parent,
CustomerID as [Customer!1!customerid],
ContactName as [Customer!1],
NULL as [Order!2!orderid],
NULL as [Order!2]
FROM Customers
where Customers.CustomerID = @CustomerID
UNION
SELECT
2 as tag,
1 as parent,
Customers.CustomerID,
Customers.ContactName,
Orders.OrderID,
Orders.ShipAddress
FROM Customers, Orders
WHERE (Customers.CustomerID = @CustomerID)
AND (Customers.CustomerID = Orders.CustomerID)
FOR XML EXPLICIT
Kliknij na nowy odnośnik do kodu XML.
Dodaj w pierwszej linijce pliku określenie kodowania znaków:
<?xml version="1.0" encoding="unicode"?>
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 13/15
Rys. 13 Dodanie tagu kodowania znaków
Kliknij na menu File->Save As.
Zapisz kod XML do pliku C:\explicit.xml.
W następnym kroku wczytasz wcześniej zapisany plik explicit.xml i
uruchomisz zapytanie SQL zliczające ilośd wystąpieo tagu Order,
każdego elementu Customer:
Kliknij przycisk NewQuery.
W nowym oknie wpisz następujący kod SQL:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:\Documents and
Settings\Administrator\Desktop\explicit.xml', CODEPAGE='unicode',
SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc
SELECT @xmlDoc.query(
'<Orders>
{
for $i in /Customer
let $count :=count($i/Order)
return
<OrdersNumber>
{$i/Customer}
<ItemCount>{$count}</ItemCount>
</OrdersNumber>
}
</Orders>')
Kliknij na nowy odnośnik do kodu XML.
Rys. 14 Wyświetlenie wyników z kodu XML
6. Zapisanie
wczytanych
danych XML do
tabeli za pomocą
pliku mapującego
Kliknij menu START->Programs->Accessories->Notepad.
Wpisz w oknie notatnika następujący kod XML, w którym znajdowad się
będą informacje, które chcemy zapisad w bazie:
<?xml version="1.0" encoding="unicode"?>
<root>
<Customer>
<CustomerID>Test</CustomerID>
<CompanyName>Teeest</CompanyName>
<City>Warsaw</City>
</Customer>
</root>
Zapisz plik pod nazwą c:\customers.xml.
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 14/15
W oknie notatnika kliknij menu File->New.
Wpisz następujący kod XML, który odzwierciedla dane z pliku XML na
tabele w bazie Northwind:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="CustomerID" dt:type="string" />
<ElementType name="CompanyName" dt:type="string" />
<ElementType name="City" dt:type="string" />
<ElementType name="ROOT" sql:is-constant="1">
<element type="Customer" />
</ElementType>
<ElementType name="Customer" sql:relation="Customers">
<element type="CustomerID" sql:field="CustomerId" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
</ElementType>
</Schema>
Zapisz plik pod nazwą c:\customersmapping.xml.
W oknie notatnika kliknij menu File->New.
Wpisz następujący skrypt Visual Basic, który zrealizuje wstawianie
danych do bazy według zadanego wcześniej schematu:
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
objBL.ConnectionString = "Provider=SQLOLEDB;Data
Source=EVALUATION;Initial Catalog=Northwind;Integrated
Security=SSPI;"
objBL.ErrorLogFile = "c:\error.log"
objBL.Execute "c:\customersmapping.xml", "c:\customers.xml"
Set objBL = Nothing
Zapisz plik pod nazwą c:\ Insertcustomers.vbs.
Przejdź na dysk lokalny C: i uruchom plik Insertcustomers.vbs.
Rys. 15 Wynik zapytania do bazy po aktualizacji danych
Możesz sprawdzid za pomocą SQL Management Studio->Object Explorer,
czy rzeczywiście zaszły zmiany w tabeli Customers bazy Northwind.
Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
Moduł 11
ITA
-
101 Bazy Danych
Instalacja i konfiguracja MS SQL Server 2008
Strona 15/15
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Zapoznałeś się z podstawami obsługi języka XML w firmowym systemie bazodanowym.
Postanowiłeś wykorzystad zdobytą wiedzę do przeniesienia danych z bazy PraceDyplomowe
znajdującej się w centrali do bazy w nowym oddziale firmy. Zanim jednak dane trafią do oddziału,
będziesz chciał zweryfikowad poprawnośd zapisu w plikach XML:
Utwórz skrypty SQL zapisujące do plików XML jak najwięcej informacji z bazy danych
PraceDyplomowe
Utwór nową, roboczą bazę PraceDyplomowe_TEMP
Odzyskaj zapisane dane do bazy PraceDyplomowe_TEMP za pomocą odpowiedniego
skryptu Visual Basic.
Zapisz swoje uwagi w pliku raportu i przedyskutuj z innymi zespołami.