db2 xml数据类型

 create table clients(
id int primary key not null,
name varchar(50),
status varchar(10),
contactinfo xml
);
“contactinfo” 列没有进行 XML 文档内部结构的定义。用户不需要为了存储数据而预定义一个 XML 数据结构(XML 模式)。事实上,DB2 可以在一个单独的列中存储任何格式良好的 XML 文档。

注册 XML 模式
创建了一个适当的 XML 模式之后,您就需要向 DB2 注册该模式。如果您的模式非常大,您可能需要在尝试注册它之前增加应用程序堆的大小。例如,发出下列语句:
清单 4. 增加应用程序堆大小


connect to test;
update db cfg using applheapsz 10000;

接下来,注册您的 XML 模式。如果您的 XML 模式没有引用其他 XML 模式,您可能需要用单个命令来注册并完成该过程。否则您还将需要发出单个命令来注册您最初的 XML 模式,添加其他需要的模式并完成注册过程。当模式文件变的非常大时,通常把它的内容分成多个文件来提高可维护性、可读性和重用性。这类似于把一个复杂的应用程序或组件分解为多个模块。本文使用了一个简单、独立的 XML 模式。您可以使用下面这个命令将其向 DB2 注册:
清单 5. 注册 XML 模式

register xmlschema 'http://mysample.org' from 'C:/XMLFiles/ClientInfo.xsd' as
user1.mysample complete;

在本例中,ClientInfo.xsd 是 XML 模式文件的名称,它位于 C:/XMLFiles 目录中。该 XML 模式将被注册到 SQL 模式 “user1” 和 XML 模式 “mysample” 下的 DB2 的内部存储库中。本例中的 http://mysample.org 参数只是一个占位符,它指定 XML 实例文档所引用的统一资源标识符 (URI);许多 XML 文档使用名称空间,这是用 URI 指定的。最后,“complete” 子句将指示 DB2 完成 XML 注册过程,以便模式可以用于验证 XML 数据。
值得注意的是,模式注册过程没有指定模式将应用到表的哪个(些)列。换句话说,模式不等于 SQL 列约束。一个给定的模式可以验证不同表中的各种 XML 列。然而,验证不是自动的。 DB2 允许任何格式良好的 XML 文档存储在 XML 列中。如果您想在存储之前验证一个已注册的模式数据,那么您需要指示 DB2 完成这项任务。
步骤 3:导入具有验证的 XML 数据
当创建了一个 XML 模式,并将它完全注册到 DB2 中之后,您现在就可以在将 XML 数据插入或导入表中的时候,让 DB2 对这些数据进行验证。据导入到 “client” 表时能够对其进行验证,请使用 DB2 IMPORT 的 XMLVALIDATE 子句。清单 6 中的下面这个语句将指示 DB2 使用您先前注册的 XML 模式 (user1.mysample) 作为默认的 XDS (XML Data Specifier),在将它们插入到 “client” 之前验证 clients.del 文件中指定的 XML 文件。
清单 6. 导入具有验证的 XML 数据

import from clients.del of del xml from C:/XMLFILES xmlvalidate using xds default
user1.mysample insert into user1.clients;
如果 DB2 确定一个 XML 文档不符合指定的模式,那么与该文档相关的整个行都将会被拒绝。
值得注意的是,XMLVALIDATE 也可以与 INSERT 语句一起使用,以指示 DB2 在插入之前验证 XML 数据。该语法与 IMPORT 例子所示的相似,即在调用 XMLVALIDATE 子句时指定一个已注册(和已完成)的 XML 模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值