PostgreSQL处理xml数据初步

PostgreSQL及PPAS支持xml数据类型,故进行如下的实验。

先看PPAS9.2中的效果:

先建立表:

复制代码
-bash-3.2$ ./bin/psql -d edb
psql (9.2.1.3)
"help" でヘルプを表示します.

edb=# CREATE TABLE xmltab01(books xml);
CREATE TABLE
edb=# INSERT INTO xmltab01(books) VALUES ('Book0001');
INSERT 0 1
edb=# INSERT INTO xmltab01(books) VALUES ('Book0002');
INSERT 0 1
edb=#
复制代码

再查询:

复制代码
edb=# SELECT books from xmltab01;

books 
-------------------------
<title>Book0001title>
<title>Book0002title>
(2 行)
复制代码

然后,继续插入更复杂的数据:

复制代码
edb=# INSERT INTO xmltab01(books) VALUES('

edb'# <book>
edb'# Book0003
edb'# <author>Author0003author>
edb'# Puber0003
edb'# book>');
INSERT 0 1
edb=#
复制代码

 

复制代码
edb=# INSERT INTO xmltab01(books) VALUES('

edb'# <book>
edb'# Book0004
edb'# <author>Author0004author>
edb'# Puber0004
edb'# book>');
INSERT 0 1
edb=# 
复制代码

 

复制代码
edb=# INSERT INTO xmltab01(books) VALUES('
edb'# <book>
edb'# Book0005
edb'# <author>Author0004author>
edb'# Puber0004
edb'# book>');
INSERT 0 1
edb=# 
复制代码

接着,进行一个带条件的查询,查找出作者为Author0004的用户所写的书的title:

不符合条件的记录也被查询出来,留下一个空值。

复制代码
edb=# SELECT xpath('/book[author/text()="Author0004"]/title', books) FROM xmltab01;
xpath 
---------------------------
{}
{}
{}
{<title>Book0004title>}
{<title>Book0005title>}
(5 行)

edb=#
复制代码

最后删除表:

edb=# drop table xmltab01;
DROP TABLE
edb=#

 

下面是使用PostgreSQL时的情形, 

初次使用发生错误,需要重新编译数据库:

复制代码
postgres=# CREATE TABLE xmltab01(books xml);
CREATE TABLE
postgres=# INSERT INTO xmltab01(books) VALUES ('Book0001');
ERROR:  unsupported XML feature
LINE 1: INSERT INTO xmltab01(books) VALUES ('Book0001...
                                            ^
DETAIL:  This functionality requires the server to be built with libxml support.
HINT:  You need to rebuild PostgreSQL using --with-libxml.
postgres=# 
复制代码

在进行了  ./configure --with-libxml  gmake && gmake install 之后,

可以正常工作。







本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3314369.html,如需转载请自行联系原作者

你可能感兴趣的:(PostgreSQL处理xml数据初步)