Oracle XML字段-如何了解I';你什么都分析过了吗?

Oracle XML字段-如何了解I';你什么都分析过了吗?,xml,oracle,xml-parsing,Xml,Oracle,Xml Parsing,我们有一个Oracle数据库,现在有一些XML数据存储在CLOB中。有近10K条记录,我们想知道数据何时更改,所以我一直在从名称/值对记录中取出数据,并将其保存到审计表中。我每天都这样做,根据存储在定义文件*中的定义对XML进行解码,将其保存到暂存表中,然后以一种将更改合并为新记录的方式进行合并。这使我能够看到前后值。一切正常 不好的是,有近10K条记录,我已经抽查了它们,以确保我得到了所有的名称/值对,但我并没有检查每一条记录。即使我现在已经得到了所有的可能性,但这并不意味着未来不会有新的名字

我们有一个Oracle数据库,现在有一些XML数据存储在CLOB中。有近10K条记录,我们想知道数据何时更改,所以我一直在从名称/值对记录中取出数据,并将其保存到审计表中。我每天都这样做,根据存储在定义文件*中的定义对XML进行解码,将其保存到暂存表中,然后以一种将更改合并为新记录的方式进行合并。这使我能够看到前后值。一切正常

不好的是,有近10K条记录,我已经抽查了它们,以确保我得到了所有的名称/值对,但我并没有检查每一条记录。即使我现在已经得到了所有的可能性,但这并不意味着未来不会有新的名字/价值观。我还没有收到关于如何存储这些数据、选项是什么或可以是什么的文档

什么是确保我选择所有名称/值对的好方法?或者认识到我没有得到什么

*我有一个列出xml字段名的表,以及一些允许我对其进行解码的附加信息。它告诉我它是一个列表还是一个数组,并帮助我解码它。这可能有点愚蠢,但我不是XML专家。很明显

下面是一些XML示例(是的,我意识到它的格式不正确)。这是一个简单的例子,我正在处理至少几十种格式,到目前为止,我已经识别了250多个名称/值对,对于这一个,我将在下面这个例子中列出

<calcFinalValuesDetails>
<measured>
    <uom>AMP</uom>
    <shouldRetainMeasuredSq>C1NO</shouldRetainMeasuredSq>
</measured>
</calcFinalValuesDetails>
<processing>
    <formula>ML*R1</formula>
</processing>
<billFactors>
    <billFactorsList>
        <sequence>1</sequence>
        <billFactor>AMP2MPP</billFactor>
    </billFactorsList>
</billFactors>

放大器
C1NO
ML*R1
1.
AMP2MPP
由此,我得出以下结论:

<uom> = AMP
<shouldRetainMeasuredSq> = C1NO
<formula> = ML*R1
<billFactors>1<billFactor> = AMP2MPP
=AMP
=c1否
=ML*R1
1=AMP2MPP
正如您所看到的,我们完全定义每个值并不重要,但它需要足够让用户识别,我希望获得可能存储的所有值

我已经检查过了,到目前为止,似乎还没有提供潜在的XML选项。我们从应用程序中编写自己的报告,但应用程序本身不是内部开发的。

我将“名称/值”对解释为“具有文本内容的XML节点,无论其深度如何”。此查询构造一个包含此类节点的名称和文本内容的中间节点,然后将其提取到行中:

select x.*
  from xmltable( 'for $n in //*[@text()] return <dummy name="{$n/name(.)}" value="{$n/text()}" />' 
                 passing myxmlvalue 
                 columns "nodename"  varchar2(100) path './@name', 
                         "nodevalue" varchar2(100) path './@value'  ) x
其中一个可能的缺陷是,我认为它不会拾取空节点


我从《如何获取节点名》中获得了灵感。

请展示示例XML和键/值示例。“我还没有收到关于数据存储方式、选项是什么或可以是什么的文档。”-也许你需要先解决这个问题?@OldProgrammer-我添加了一个简单的示例。我怀疑xml格式是专有的,或者至少他们的发行说明不需要像这样详细说明。哦,我喜欢这个想法!让我用它来做一些工作——我想我可以看到一个好的前进方向!空节点可能会被忽略,前提是我有一个定期检查并查找任何新的非空节点的流程。
nodename                nodevalue
----------------------  ---------
uom                     AMP
shouldRetainMeasuredSq  C1NO
formula                 ML*R1
sequence                1
billFactor              AMP2MPP