使用pureXML和XMLTable在DB2中分解XML

本文介绍了如何在DB2 pureXML中利用XMLTable功能分解XML文档,以便进行数据分析。通过示例展示了如何处理ASDI消息中的arrivalInformation,特别是computerId和qualifiedAircraftId,强调了分解策略、性能考量以及使用视图、存储过程和触发器等方法。
摘要由CSDN通过智能技术生成

DB2 pureXML允许将格式正确的XML文档以本机格式存储在关系数据库中。 通过使用SQL和XQUERY语言,可以在数据库中操作这些文档。 如果没有此功能,应用程序将必须接收完整的文档,进行更改,然后将完整的文档返回数据库。 对于大文件或大量文件,这可能会使网络连接快速饱和。

pureXML功能包括对SQL函数XMLQUERY,XMLTABLE和XMLEXISTS的支持。 这些分别在SELECT,FROM和WHERE子句中使用。 XMLTABLE函数允许多个XPath或XQuery表达式指定文档中的元素,然后像在关系表中一样对其进行访问。 XMLTABLE函数中的一个XQuery表达式用作生成行的表达式,这意味着XMLTABLE函数针对此XQuery表达式返回的每一项返回一行。 使用多个XMLTABLE函数调用可以模拟基于SQL的工具可用的外键关系。 有关XMLTABLE函数的更多详细信息,您可以阅读developerWorks文章XMLTABLE示例

有时将XML转换为关系数据称为“切碎”。 使用DB2 pureXML可以切碎文档而无需从数据库中检索它,并将结果存储在关系表中。

留言内容

ASDI消息

为了探索XML文档的分解或“分解”,将使用“向工业界展示飞机状况(ASDI)”作为其架构。 ASDI是一个定义明确的标准,它使用XML通过数据馈送向航空业成员传播有关空中交通数据的信息。 该信息以包含多个消息的流的形式到达, 如图1所示。 共有11条常见消息,它们由81个核心元素组成。

arrivalInformation消息

ASDI提要中的一种消息是到达消息。 它具有一种到达信息( 图2 )。 此复杂类型定义为qualifiedAircraftIdType类型( 图3 )和timeOfArrivalType类型的两个元素。 QualifiedAircraftIdType由computerIdType( 图4 ),出发位置信息和到达位置信息组成。

图1.典型消息流的框图
框图显示asdiMessage数据包中的多个到达信息消息
图2. ArrivalInformationType模式
ArrivalInformationType的图表,显示它由合格的AircraftIdType和timeOfArrivalType组成
图3.qualifiedAircraftIdType模式
合格的AircraftId类型的图表,显示它由flightClass,aircraftIdType,flightComputerIdType,departmentPointType和arrivalPointType组成
图4. computerIdType模式
computerId Type的图表,显示它由facilityIdentifiedType,comptuerSystemIdType和idNumberType组成

分解文件

场景:分析人员希望运行一些查询以汇总到达信息。 仅需要一部分可用数据。 该数据将汇总为报告。 这是一个一次性的过程,将仅偶尔运行且优先级较低。

定义重要的数据元素

应用程序不需要了解文档架构中的所有元素。 第一步应该是编译重要元素和XPATH表达式的列表,以在XML文档中找到它们。 下一步考虑聚合或过滤可能需要的其他元素。

一旦定义了重要元素,就可以从XML模式,样本文档和提供的转换中确定它们的关系数据类型。 然后可以将紧密相关的元素分组为表和相关表,类似于用于传统关系数据库建模的方法。 拥有一个如表1所示的清单很有用,该清单使用源元素的XPATH表达式跟踪关系表,列和数据类型。 如果需要进行转换以更改返回数据的方式,则也可以在清单中注明。

在ASDI模式中,computerId具有三个元素,它们是字符串,可以在关系数据库中表示为单个表。

表1.该表显示了从关系列到XPATH表达式的computerId映射
数据类型 XPATH
计算机ID facilityId VARCHAR(4) / adiMessage / arrivalInformation / nxcm:qualifiedAircraftId / nxce:computerId / nxce:facilityIdentifier
计算机ID computerSystemId VARCHAR(5) / asdiMessage / arrivalInformation / nxcm:qualifiedAircraftId / nxce:computerId / nxce:computerSystemId
计算机ID 身份证号码 VARCHAR(3) / asdiMessage / arrivalInformation / nxcm:qualifiedAircraftId / nxce:computerId / nxce:idNumber
清单1. ComputerId表
CREATE TABLE computerid (
	facilityID       VARCHAR(4),
	computersystemID VARCHAR(5),
	idnumber	 VARCHAR(3)
)
清单2.填充ComputerId表的XMLTable查询
INSERT INTO computerid (facilityID, computersystemID, idnumber)
SELECT X.facilityID, X.computersystemID, x.idnumber
FROM XMLTABLE (
    XMLNAMESPACES( 'http://tfm.faa.gov/tfms/NasXCoreElements'	AS "nxce",
                   'http://tfm.faa.gov/tfms/MessageMetaData'	AS "mmd",
                   'http://tfm.faa.gov/tfms/NasXCommonMes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值