もっと詳しく

XMLの完全な形式は、eXtensibleMarkupLanguageです。 XMLの各要素またはタグは、ユーザーが定義します。 XMLデータを使用することで、ある場所から別の場所に情報を簡単に送信できます。 XMLデータは階層形式で保存されます。 PostgreSQLデータベースは、XMLデータを格納するためのXMLデータ型をサポートしています。 このチュートリアルでは、PostgreSQLテーブルでXMLデータ型を使用する方法を示しました。

前提条件:

このチュートリアルに示されているSQLステートメントを実行する前に、最新バージョンのPostgreSQLパッケージをLinuxオペレーティングシステムにインストールする必要があります。 次のコマンドを実行して、PostgreSQLをインストールして起動します。

$ sudo apt得る ypostgresqlをインストールしますpostgresql貢献

$ sudo systemctl 始める postgresqlサービス

次のコマンドを実行して、root権限でPostgreSQLにログインします。

PostgreSQLデータ型の使用:

ブールデータ型のテーブルを作成する前に、PostgreSQLデータベースを作成する必要があります。 したがって、次のコマンドを実行して、’という名前のデータベースを作成します。testdb‘。

作成 データベース testdb;

データベースの作成後、次の出力が表示されます。

A.子ノードが1つあるXMLデータ

次のCREATEクエリを実行して、 xmldoc1 XMLデータ型のフィールドを使用:

作成 テーブル xmldoc1 ((xmldata XML)。;

次のINSERTクエリを実行して、XMLデータ型のxmldataフィールドに1つの子ノードを持つXMLデータを追加します。

上記のステートメントを実行すると、次の出力が表示されます。

次のSELECTクエリを実行して、からすべてのレコードを読み取ります。 xmldoc1 テーブル:

上記のステートメントを実行すると、次の出力が表示されます。

B.異なる子ノードを持つXMLデータ

次のCREATEクエリを実行して、 xmldoc2 2つのフィールドがあります。 最初のフィールド名は id これはテーブルの主キーです。 このフィールドの値は、新しいレコードが挿入されるときに自動的にインクリメントされます。 2番目のフィールド名はxmldataで、データ型はXMLです。

作成 テーブル xmldoc2 ((
idシリアル 主要な
xmldata XML )。;

テーブルが正常に作成されると、次の出力が表示されます。

次を実行します 入れる 異なる子ノードのXMLデータを挿入するためのクエリ。 ここでは、4つの子ノードを持つXMLデータがに挿入されます xmldata 分野。

入れる の中へ xmldoc2 ((xmldata)。

((‘<?xml version = "1.0"?>

<メール>

[email protected]

<から>[email protected]

サイトがダウンしています

私のサイトは機能していません。

)。;

次の場合、次の出力が表示されます。 入れる クエリは正常に実行されます。

次のSELECTクエリを実行して、各フィールドのXMLドキュメントの各ノードの値を個別に読み取ります。

選択する 嫌な((xpath((‘// to / text()’ xmldata :: XML)。)。 なので

嫌な((xpath((‘// from / text()’ xmldata :: XML)。)。 なので から

嫌な((xpath((‘// subject / text()’ xmldata :: XML)。)。 なので 主題

嫌な((xpath((‘// message / text()’ xmldata :: XML)。)。 なので メッセージ

から xmldoc2;

C.XMLデータをテーブルに変換する

次のCREATEクエリを実行して、 ブックリスト XMLデータをテーブルに変換します。

作成 テーブル ブックリスト なので 選択する xml

$$<>>

<ブックID=「01」>>

<題名>>XML開発者ガイド題名>>

<著者>>ガンバルデラ マシュー著者>>

<価格>>44.95価格>>

>>

<ブックID=「02」>>

<題名>>真夜中の雨題名>>

<著者>>ラルズ キム著者>>

<価格>>5.95価格>>

>>

<ブックID=「03」>>

<題名>>メーブアセンダント題名>>

<著者>>Corets エヴァ著者>>

<価格>>5.95価格>>

>>

>>$$ なので 本;

XMLデータが適切にテーブルに変換されると、次の出力が表示されます。

XMLノードのコンテンツは、ノードのパスを適切に定義することで取得できます。 ザ xmltable。*は、XMLデータから変換されたテーブルからノードと属性の値を読み取る方法の1つです。 次のSELECTクエリを実行して、 id の属性 ノードとの値 タイトル、作成者、および価格ノード。 ここでは、「@」記号を使用して属性値を読み取っています。

選択する xmltable。* から ブックリスト

XMLTABLE ((‘/ books / book’ 合格本

id CHAR((2)。‘@id’ いいえ ヌル

タイトルテキストパス ‘題名’ いいえ ヌル

著者テキストパス ‘著者’ いいえ ヌル

価格 浮く‘価格’ いいえ ヌル )。;

上記のクエリを実行すると、次の出力が表示されます。

XMLノードと属性の値は、XMLノードに基づいてSELECTクエリでフィールド名を定義することにより、テーブルから取得できます。 次のSELECTクエリを実行して、 id ブックノードの属性との値 タイトル、作成者、および価格ノード。 ここでは、前のSELECTクエリと同様に、「@」記号を使用して属性値を読み取りました。

選択する Id 題名 著者 価格 から ブックリスト

XMLTABLE ((‘/ books / book’ 合格本

Id INT‘@id’ いいえ ヌル

題名 VARCHAR ((50)。‘題名’ いいえ ヌル

著者 VARCHAR ((30)。‘著者’ いいえ ヌル

価格 浮く‘価格’ いいえ ヌル)。;

上記のクエリを実行すると、次の出力が表示されます。

集計関数は、SELECTクエリを使用してXMLのノードに適用できます。 次のSELECTクエリを実行して、 id を使用したすべての書籍の属性と合計価格 COUNT()関数とSUM() 関数。 XMLデータによると、id属性の総数は3であり、すべての価格ノードの合計は56.85です。

選択する カウント((id)。 なので Total_Books ((価格)。 なので 合計金額 から ブックリスト

XMLTABLE ((‘/ books / book’ 合格本

id INT‘@id’ いいえ ヌル

タイトル VARCHAR ((50)。‘題名’ いいえ ヌル

著者 VARCHAR ((30)。‘著者’ いいえ ヌル

価格 浮く‘価格’ いいえ ヌル)。;

上記のクエリを実行すると、次の出力が表示されます。

結論:

このチュートリアルでは、PostgreSQLテーブルでXMLデータ型を使用し、テーブルからXMLデータをさまざまな方法で読み取る方法を示し、新しいPostgreSQLユーザーがこのデータ型の使用法を正しく理解できるようにします。

The post PostgreSQLXMLデータ型 appeared first on Gamingsym Japan.