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

时间:2013-12-20 06:42:04

标签: java sql oracle groovy plsql

我有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标记PCVERSION 8 开头的所有cfg_id。有什么办法吗?

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

XML

enter image description here

它不需要是任何查询,即使它是java或groovy代码,它也会帮助我。

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

2 个答案:

答案 0 :(得分:0)

通常你知道BLOB列中的数据是什么,所以你可以在SQL查询中解析..

如果是文字列(varchar或类似内容),您可以使用to_char(coloumName)

您可以使用许多功能在link

中找到它们

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

convert blob to file link

答案 1 :(得分:0)

所以基本上CONFIGURATION_INFO表中Filecontent列的数据是BLOB?

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

此函数正在将列的数据类型从BLOB转换为XMLType。然后使用XPath函数解析它。

Oracle数据库

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

自行完成剩余的WHERE逻辑。