繁体   English   中英

从Oracle的BLOB列中提取/解析XML数据/元素

[英]Extract/Parse XML data/element from BLOB column in Oracle

我有2个表,CONFIGURATION_INFO和CONFIGURATION_FILE。 我使用以下查询来查找所有员工文件

select i.cfg_id, Filecontent 
from CONFIGURATION_INFO i, 
     CONFIGURATION_FILE f 
where i.cfg_id=f.cfg_id

但是我还需要从blob列Filecontent解析或提取数据,并显示其xml标签PCVERSION8开始的所有cfg_id。 有什么办法吗?

需要提取的XML标记为<CSMCLIENT><COMPONENT><PCVERSION>8.1</PCVERSION></COMPONENT></CSMCLIENT>

XML格式

在此处输入图片说明

它不必是任何查询,即使它是Java或groovy代码,也可以帮助我。

注意:有些XML可能最大为5MB。

通常,您知道BLOB列中的数据,因此可以在SQL查询中进行解析。

如果它是文本列( varchar或类似的东西),则可以使用to_char(coloumName)

您可以使用很多功能,可以在此链接中找到它们

通常您将使用to_char/to_date/hexToRow/rowTohex

将Blob转换为文件链接

因此,基本上,表CONFIGURATION_INFO的数据对于列Filecontent是BLOB?

因此,从数据库的BLOB内容中查询XML的语法是使用此函数XMLType

此函数将列的数据类型从BLOB转换为XMLType。 然后使用XPath函数对其进行解析。

甲骨文数据库

select
 xmltype(Filecontent, 871).extract('//CSMCLIENT/COMPONENT/PCVERSION/text()').getstringval()
from CONFIGURATION_INFO ...

自行完成WHERE逻辑的其余部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM