PostgresQLデータベースとの間でXMLデータをエクスポート/インポートできる必要があります。ドキュメントを確認し、クエリまたはテーブルを使用してXMLを簡単にエクスポートできると判断しました。同じXMLを同じデータベースに再インポートする最も簡単な方法は何でしょうか?私はサードパーティのツールを使用しないことを好みますが、PG関数とJava/JDBCのプログラミングを処理します。
有用な情報を提供してくれる人に投票します。
PostgresQLデータベースとの間でXMLデータをエクスポート/インポートできる必要があります。ドキュメントを確認し、クエリまたはテーブルを使用してXMLを簡単にエクスポートできると判断しました。同じXMLを同じデータベースに再インポートする最も簡単な方法は何でしょうか?私はサードパーティのツールを使用しないことを好みますが、PG関数とJava/JDBCのプログラミングを処理します。
有用な情報を提供してくれる人に投票します。
インポートするXMLごとに1つの行を含む「ステージング」テーブルを作成します。
次に、XML関数(xpath_tableなど)を使用して、そのXML列を行と列にスライスします。このようなもの:
-- make sure xpath_table is available
create extension xml2;
-- create XML staging table
create table xml_test (id integer, xml text);
-- create sample XML document
insert into xml_test (id, data)
values
(1, '<person-list>
<person>
<id>42</id>
<firstname>Arthur</firstname>
<lastname>Dent</lastname>
</person>
<person>
<id>43</id>
<firstname>Zaphod</firstname>
<lastname>Beeblebrox</lastname>
</person>
</person-list>'
);
ここで、ターゲットテーブルが次の場合:
create table person
(
id integer not null primary key,
firstname text,
lastname text
);
使用できます:
insert into person (id, firstname, lastname)
select person_id, firstname, lastname
from xpath_table('id', 'xml', 'xml_test',
'/person-list/person/id|/person-list/person/firstname|/person-list/person/lastname', 'id=1')
as t (docid integer, person_id integer, firstname text, lastname text)
関数の最後のパラメーターid=1
は、XML列を含むテーブルから選択された行です。そこに複数のドキュメントがある場合は、xpath式に一致するドキュメントを選択する必要があります
コアXML関数を使用して、xml2モジュールなしで同様のビューを作成することもできます。user272735がコメントに投稿したリンクを参照してください。