Der XML Extender bietet eine Methode zum Speichern und Aufrufen ganzer XML-Dokumente in der Datenbank; diese Methode wird als XML-Spalte bezeichnet. Mit der Methode "XML-Spalte" können Sie das Dokument mit den XML-Dateitypen speichern, die Spalte in Seitentabellen indexieren und das XML-Dokument anschließend abfragen oder durchsuchen. Diese Speichermethode ist besonders nützlich für Archivierungsanwendungen, in denen Dokumente nicht sehr häufig aktualisiert werden. Für dieses Lernprogramm speichern Sie das bereitgestellte XML-Dokument in der XML-Spalte.
In dieser Lektion speichern Sie das Dokument als XMLVARCHAR. Beim Speichern des Dokuments führen Sie die folgenden Aktionen aus:
Sie können mit einer DTD die XML-Daten in einer XML-Spalte überprüfen. Der XML Extender erstellt eine Tabelle in der für XML aktivierten Datenbank mit dem Namen DTD_REF. Die Tabelle wird als DTD-Referenz bezeichnet und steht zum Speichern von DTDs zur Verfügung. Wenn Sie XML-Dokumente überprüfen wollen, müssen Sie die DTD in diesem Repository speichern. Die DTD für dieses Lernprogramm lautet c:\dxx\samples\dtd\getstart.dtd.
So fügen Sie die DTD ein:
Geben Sie über das DB2-Befehlsfenster den folgenden SQL INSERT-Befehl in einer einzigen Zeile ein:
DB2 CONNECT TO SALES_DB DB2 INSERT into db2xml.dtd_ref values('c:\dxx\samples\dtd\getstart.dtd', db2xml.XMLClobFromFile('c:\dxx\samples\dtd\getstart.dtd'), 0, 'benutzer1', 'user1', 'benutzer1')
Sie können auch die folgende Befehlsdatei zum Einfügen der DTD ausführen:
getstart_insertDTD.cmd
Die DAD-Datei für die XML-Spalte hat eine einfache Struktur. Sie geben als Speichermethode "XML-Spalte" an und definieren die Tabellen und Spalten für die Indexierung.
In den folgenden Schritten werden die Elemente in der DAD als Befehle und die Elemente Ihrer XML-Dokumentstruktur als Elemente bezeichnet. Ein Muster einer DAD-Datei ähnlich der von Ihnen erstellten finden Sie in c:\dxx\samples\dad\getstart_xcolumn.dad. Dieses Muster weist einige kleine Unterschiede gegenüber der in den folgenden Schritten generierten Datei auf. Wenn Sie das Muster für die Lektion verwenden, beachten Sie, daß die Dateipfade für Ihre Umgebung anders sein können und daß der Wert <validation> auf NO statt auf YES gesetzt ist.
So bereiten Sie die DAD-Datei vor:
Beachten Sie, daß bei allen in der DAD-Datei verwendeten Markierungen zwischen Groß- und Kleinbuchstaben unterschieden wird.
<?xml version="1.0"?> <!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">Die DAD-Datei ist ein XML-Dokument und erfordert XML-Deklarationen.
<dtdid>c:\dxx\samples\dtd\getstart.dtd</dtdid>
Stellen Sie sicher, daß diese Zeichenfolge mit den Werten im ersten Parameter übereinstimmt, wenn Sie die DTD in die DTD-Referenztabelle unter Die DTD im DTD-Repository speichern einfügen. Der Pfad, den Sie für die DTD-ID verwendet haben, kann beispielsweise ein anderer sein als in der Zeichenfolge oben angegeben, wenn Sie mit einem anderen Laufwerk arbeiten.
<validation>YES</validation>Der Wert von <validation> muß in Großbuchstaben eingegeben werden.
<Xcolumn> </Xcolumn>
<Xcolumn> <table name="order_side_tab"> </table> <table name="part_side_tab"> </table> <table name="ship_side_tab"> </table> </Xcolumn>
<Xcolumn> <table name="order_side_tab"> <column name="order_key" type="integer" path="/Order/@key" multi_occurrence="NO"/> <column name="customer" type="varchar(50)" path="/Order/Customer/Name" multi_occurrence="NO"/> </table> <table name="part_side_tab"> <column name="price" type="decimal(10,2)" path="/Order/Part/ExtendedPrice" multi_occurrence="YES"/> </table> <table name="ship_side_tab"> <column name="date" type="DATE" path="/Order/Part/Shipment/ShipDate" multi_occurrence="YES"/> </table> </Xcolumn>
Sie können die eben erstellte Datei mit der Beispieldatei c:\dxx\samples\dad\getstart_xcolumn.dad vergleichen. Diese Datei ist eine Arbeitskopie der zum Aktivieren der XML-Spalte und zum Erstellen der Seitentabellen erforderlichen DAD-Datei. Die Beispieldatei enthält Pfadanweisungen, die für eine erfolgreiche Ausführung eventuell an Ihre Umgebung angepaßt werden müssen.
In diesem Abschnitt erstellen Sie die Tabelle SALES_TAB. Zunächst enthält diese Tabelle zwei Spalten mit den Verkaufsinformationen für die Bestellung.
So erstellen Sie die Tabelle:
Geben Sie über das DB2-Befehlsfenster die folgende Anweisung CREATE TABLE ein:
DB2 CONNECT TO SALES_DB DB2 CREATE TABLE SALES_TAB(INVOICE_NUM CHAR(6) NOT NULL PRIMARY KEY, SALES_PERSON VARCHAR(20))
Alternativ dazu können Sie auch die folgende Befehlsdatei zum Erstellen der Tabelle ausführen:
getstart_createTabCol.cmd
Fügen Sie jetzt der Tabelle SALES_TAB eine neue Spalte hinzu. Diese Spalte enthält das intakte XML-Dokument, das Sie zuvor erstellt haben; es muß den UDT XML haben. Der XML Extender bietet mehrere Datentypen, die in Kapitel 8, Benutzerdefinierte Typen des XML Extender beschrieben werden. In diesem Lernprogramm speichern Sie das Dokument als XMLVARCHAR.
So fügen Sie die Spalte mit dem XML-Typ hinzu:
Geben Sie über das DB2-Befehlsfenster die folgende SQL-Anweisung ein:
DB2 ALTER TABLE SALES_TAB ADD ORDER DB2XML.XMLVARCHAR
Alternativ dazu können Sie auch die folgende Befehlsdatei zum Ändern der Tabelle ausführen:
getstart_alterTabCol.cmd
Nachdem Sie die Spalte mit dem Typ XML erstellt haben, aktivieren Sie sie für den XML Extender. Wenn Sie die Spalte aktivieren, liest der XML Extender die DAD-Datei und erstellt die Seitentabellen. Vor dem Aktivieren der Spalte müssen Sie folgende Punkte ausführen:
So aktivieren Sie die Spalte für XML:
Geben Sie über das DB2-Befehlsfenster den folgenden Befehl ein:
dxxadm enable_column SALES_DB SALES_TAB ORDER GETSTART_XCOLUMN.DAD -v SALES_ORDER_VIEW -r INVOICE_NUM
Alternativ dazu können Sie auch die folgende Befehlsdatei zum Aktivieren der Spalte für XML ausführen:
getstart_enableCol.cmd
Der XML Extender erstellt die Seitentabellen mit der Spalte INVOICE_NUM und erstellt die Standardsicht.
Wichtig: Ändern Sie die Seitentabellen nicht. Sie sollten das XML-Dokument nur mit den vom XML Extender bereitgestellten UDFs aktualisieren. Der XML Extender aktualisiert die Seitentabellen automatisch, wenn Sie das XML-Dokument in der XML-Spalte aktualisieren.
Beim Aktivieren der XML-Spalte haben Sie eine Sicht der XML-Spalten und -Seitentabellen erstellt. Sie können diese Sicht beim Arbeiten mit der XML-Spalte verwenden.
So zeigen Sie die XML-Spalte und die Spalten der XML-Seitentabellen an:
Geben Sie über das DB2-Befehlsfenster die folgende SQL SELECT-Anweisung ein:
DB2 SELECT * FROM SALES_ORDER_VIEW
Die Sicht zeigt die Spalten in den Seitentabellen, wie in der Datei getstart_xcolumn.dad angegeben.
Das Erstellen von Indizes zu Seitentabellen ermöglicht ein schnelles
strukturelles Durchsuchen des XML-Dokuments. In diesem Schritt
erstellen Sie Indizes zu Schlüsselspalten in den Seitentabellen, die beim
Aktivieren der XML-Spalte ORDER erstellt wurden. Die Serviceabteilung
hat angegeben, welche Spalten ihre Mitarbeiter voraussichtlich am häufigsten
abfragen werden. Tabelle 3 beschreibt diese zu indexierenden Spalten:
Tabelle 3. Zu indexierende Spalten der Seitentabellen
Spalte | Seitentabelle |
---|---|
ORDER_KEY | ORDER_SIDE_TAB |
CUSTOMER | ORDER_SIDE_TAB |
PRICE | PART_SIDE_TAB |
DATE | SHIP_SIDE_TAB |
So indexieren Sie die Seitentabellen:
Geben Sie über das DB2-Befehlsfenster die folgenden SQL-Befehle ein:
DB2 CREATE INDEX KEY_IDX ON ORDER_SIDE_TAB(ORDER_KEY) DB2 CREATE INDEX CUSTOMER_IDX ON ORDER_SIDE_TAB(CUSTOMER) DB2 CREATE INDEX PRICE_IDX ON PART_SIDE_TAB(PRICE) DB2 CREATE INDEX DATE_IDX ON SHIP_SIDE_TAB(DATE)
Alternativ dazu können Sie auch die folgende Befehlsdatei zum Erstellen der Indizes ausführen:
getstart_createIndex.cmd
Sie haben eine Spalte erstellt, die das XML-Dokument enthalten kann, und die Seitentabellen indexiert; jetzt können Sie das Dokument mit den Funktionen des XML Extender speichern. Beim Speichern von Daten in einer XML-Spalte verwenden Sie entweder die Standardumsetzungsfunktionen oder die XML ExtenderUDFs. Da Sie ein Objekt des Basistyps VARCHAR in einer Spalte des XML-UDT XMLVARCHAR speichern, verwenden Sie die Standardumsetzungsfunktion. Informationen zu den Standardumsetzungsfunktionen zum Speichern sowie zu den vom XML Extender bereitgestellten UDFs finden Sie im Abschnitt Daten speichern.
So speichern Sie das XML-Dokument:
Wichtig: Öffnen Sie das XML-Dokument c:\dxx\samples\xml\getstart.xml. Stellen Sie sicher, daß der Dateipfad in DOCTYPE der in der DAD angegebenen DTD-ID und der beim Einfügen in das DTD-Repository angegebenen DTD-ID entspricht. Sie können diese Übereinstimmung überprüfen, indem Sie die Tabelle db2xml.DTD_REF abfragen und das DTD-ID-Element in der DAD-Datei prüfen. Wenn Sie eine vom Standardwert abweichende Laufwerks- und Verzeichnisstruktur verwenden, müssen Sie eventuell den Pfad in der DOCTYPE-Deklaration verwenden.
Geben Sie über das DB2-Befehlsfenster den folgenden SQL INSERT-Befehl ein:
DB2 INSERT INTO SALES_TAB (INVOICE_NUM, SALES_PERSON, ORDER) VALUES('123456', 'Sriram Srinivasan', db2xml.XMLVarcharFromFile('c:\dxx\samples\cmd\getstart.xml'))
Beim Speichern des XML-Dokuments aktualisiert der XML Extender die Seitentabellen automatisch.
Alternativ dazu können Sie auch die folgende Befehlsdatei zum Speichern des Dokuments ausführen:
getstart_insertXML.cmd
Zum Sicherstellen, daß die Tabellen aktualisiert wurden, führen Sie über das DB2-Befehlsfenster die folgenden SELECT-Anweisungen für die Tabellen aus:
DB2 SELECT * FROM SALES_TAB DB2 SELECT * FROM PART_SIDE_TAB DB2 SELECT * FROM ORDER_SIDE_TAB DB2 SELECT * FROM SHIP_SIDE_TAB
Sie können das XML-Dokument mit einer direkten Abfrage in einem Abgleich zu den Seitentabellen durchsuchen. In diesem Schritt suchen Sie nach allen Bestellungen mit einem Preis über 2500,00.
So fragen Sie die Seitentabellen ab:
Geben Sie über das DB2-Befehlsfenster den folgenden SELECT-Befehl ein:
DB2 "SELECT DISTINCT SALES_PERSON FROM SALES_TAB S, PART_SIDE_TAB P WHERE PRICE > 2500.00 AND S.INVOICE_NUM=P.INVOICE_NUM"
In den Ergebnisdaten sollten die Namen der Verkäufer angezeigt werden, die einen Artikel mit einem Preis über 2500,00 verkauft haben.
Alternativ dazu können Sie auch die folgende Befehlsdatei zum Durchsuchen des Dokuments ausführen:
getstart_queryCol.cmd
Sie haben hiermit das Lernprogramm "Erste Schritte" zum Speichern von XML-Dokumenten in DB2-Tabellen abgeschlossen. Viele Beispiele in diesem Handbuch basieren auf diesen Lektionen.