0

PostgresQLデータベースとの間でXMLデータをエクスポート/インポートできる必要があります。ドキュメントを確認し、クエリまたはテーブルを使用してXMLを簡単にエクスポートできると判断しました。同じXMLを同じデータベースに再インポートする最も簡単な方法は何でしょうか?私はサードパーティのツールを使用しないことを好みますが、PG関数とJava/JDBCのプログラミングを処理します。

有用な情報を提供してくれる人に投票します。

4

1 に答える 1

4

インポートする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がコメントに投稿したリンクを参照してください。

于 2012-05-21T19:40:40.663 に答える