DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的最佳实践,第 2 部分:向 DB2 数据库中添加 XML 数据指南
2009-11-12 00:00:00 来源:WEB开发网XML 数据模式需要解析,有良好格式的 XML 文档有一个文档节点(作为这个文档中的唯一根元素的父节点)。这个文档节点在一个 XML 文档的文本表示上并不可见。从输入文档中抽取的交易子树没有文档节点,而且不能作为一个有良好格式的文档插入。因此,document{} 构造器为每一个抽取出来的交易创建一个文档节点。
清单 2. 把大型输入文档拆分成单独的交易文档INSERT INTO trades(tradedoc)
SELECT doc FROM
XMLTABLE ('$d/alltrades/FpML' passing cast(? as XML) as "d"
COLUMNS
doc XML PATH 'document{.}') AS X
你可能记得 TRADES 表也有一个整型的 tradeId 列。这列没有被上述插入填充。基于你实际的应用需求,你可以定义 tradeId 列为自生成列。如果有 XML 列的表也包含关系型列,用从 XML 文档中抽取的值来填充它们可能很有好处。这会在下一章中进行讨论。
以混合方式存储交易
在图 11 中你可以看到一个 TRADES 表的第二个版本,在关系型列中保留了交易时间、交易类型和各个交易方的 IDs 。这是除了在 XML 列中的全部 FpML 文档外的关系型数据,因此叫做混合存储。
提示:抽取选择的 XML 元素值插入到同一行的关系列中,XML 文档可以满座多种需求。关系型列可以很容易的被 SQL-only 访问重要或经常访问的数据条目、定义的主键、外键或其它约束,以及多列关系型索引(组合键)的定义。
清单 3. FpML 交易的混合存储create table trades2 (trdDate Date, trdType varchar(20), partyId1 integer,
partyId2 integer, tradedoc XML);
insert into trades2
select *
from xmltable('$d/FpML' passing cast(? as XML) as "d"
columns
tradeDate date path 'trade/tradeHeader/tradeDate',
tradetype varchar(20) path 'trade/*[2]/local-name(.)',
partyId1 integer path 'party[@id="party1"]/partyId' ,
partyId2 integer path 'party[@id="party2"]/partyId',
doc XML path 'document{.}')
) as t;
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››最佳ASP.NET编程习惯
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
更多精彩
赞助商链接