暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES query _to_xml函数使用技巧

数据猿 2023-12-11
178


金仓数据库KingbaseES query _to_xml函数使用技巧

关键字:

KingbaseES、query_to_xml、sql、xml、query、人大金仓

XML数据类型

数据类型可以被用来存储XML数据。它比直接在一个text域中存储XML数据的优势在于,它会检查输入值的结构是不是良好,并且有支持函数用于在其上执行类型安全的操作。KingbaseES支持将关系表内容映射为XML类型的数据,提供了一些内置函数,例如query_to_xml、table_to_xml、cursor_to_xml,其中,query_to_xml函数的功能为将sql查询结果转化为XML文档。下文详细介绍了query_to_xml函数的使用。

二、query_to_xml

2.1 语法

query_to_xml(query text, nulls boolean, tableforest boolean, targetns text)

  • 参数详解:
  • query:sql查询字符串,例如:‘select * from test’。
  • nulls:决定空值是否会被包含在输出中。如果为真,列中的空值被表示为:<columnname xsi:nil="true"/>,其中xsi是 XML 模式实例的 XML 名字空间前缀。一个合适的名字空间声明将被加入到结果值中。如果为假,包含空值的列将被从输出中忽略掉。
  • tableforest:决定xml文档输出形式。如果tableforest为假,则结果的 XML 文档看起来像这样:

<tablename>

<row>

<columnname1>data</columnname1>

<columnname2>data</columnname2>

</row>

<row>

...

</row>

...

</tablename>

如果tableforest为真,结果是一个看起来像这样的 XML 内容片断:

<tablename>

<columnname1>data</columnname1>

<columnname2>data</columnname2>

</tablename>

<tablename>

...

</tablename>

  • targetns:指定想要的结果的 XML 名字空间。值得注意的是,该参数不能为空,如果设置为空串,得到的XML文档会为空。
  • 返回值:
  • XML类型的数据。

2.2 使用

(1)数据准备:

create table test1 (id int, name text);

insert into test1 values(1, 'aaa'), (2, 'bbb'), (3, null);

(2)函数的调用方式:

  • 方式一:

test=# select query_to_xml('select * from test1', false, false, 'kes');

query_to_xml

---------------------------------------------------------------------------

<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+

+

<row> +

<id>1</id> +

<name>aaa</name> +

</row> +

+

<row> +

<id>2</id> +

<name>bbb</name> +

</row> +

+

<row> +

<id>3</id> +

</row> +

+

</table> +

(1 行记录)

  • 方式二:

test=# select * from query_to_xml('select * from test1', false, false, 'kes');

query_to_xml

---------------------------------------------------------------------------

<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+

+

<row> +

<id>1</id> +

<name>aaa</name> +

</row> +

+

<row> +

<id>2</id> +

<name>bbb</name> +

</row> +

+

<row> +

<id>3</id> +

</row> +

+

</table> +

(1 行记录)

(3)函数的参数设置:

  • nulls设置为true:

test=# select * from query_to_xml('select * from test1', true, false, 'kes');

query_to_xml

---------------------------------------------------------------------------

<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+

+

<row> +

<id>1</id> +

<name>aaa</name> +

</row> +

+

<row> +

<id>2</id> +

<name>bbb</name> +

</row> +

+

<row> +

<id>3</id> +

<name xsi:nil="true"/> +

</row> +

+

</table> +

(1 行记录)

  • tableforest设置为true:

test=# select * from query_to_xml('select * from test1', false, true, 'kes');

query_to_xml

-------------------------------------------------------------------------

<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes"> +

<id>1</id> +

<name>aaa</name> +

</row> +

+

<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+

<id>2</id> +

<name>bbb</name> +

</row> +

+

<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes"> +

<id>3</id> +

</row> +

+

(1 行记录)

(4)将xml文档写入文件:

  • 如果文件默认为tsv模式,换行符\n显示在输出结果中:

test=# copy(select query_to_xml('select * from test1 where id=3', false, false, 'kes')) to stdout;

<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes"> \n\n<row>\n <id>3</id>\n</row>\n\n</table>\n

  • 如果文件为csv模式,换行符\n则用于换行,不会显示在输出结果中:

test=# copy(select query_to_xml('select * from test1 where id=3', false, false, 'kes')) to stdout csv;

"<table xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""kes"">

<row>

<id>3</id>

</row>

</table>

"

参考文档:

《KingbaseES SQL语言参考手册》

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论