我有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
它不需要是任何查询,即使它是java或groovy代码,它也会帮助我。
注意:有些XML可能大到5MB。
答案 0 :(得分:0)
通常你知道BLOB列中的数据是什么,所以你可以在SQL查询中解析..
如果是文字列(varchar
或类似内容),您可以使用to_char(coloumName)
。
您可以使用许多功能在link
中找到它们通常您会使用to_char/to_date/hexToRow/rowTohex
答案 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
逻辑。