もっと詳しく

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.