2013-12-20 145 views
0

我有一個2個表,CONFIGURATION_INFO和CONFIGURATION_FILE。我用下面的查詢找出所有員工檔案從Oracle中的BLOB列提取/解析XML數據/元素

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

,但我也需要解析或從BLOB列Filecontent提取數據並顯示所有cfg_id其XML標籤PCVERSION與開始。有什麼辦法嗎?

需要被提取

XML標籤是<CSMCLIENT><COMPONENT><PCVERSION>8.1</PCVERSION></COMPONENT></CSMCLIENT>

XML

enter image description here

它不需要任何查詢,即使它是一個Java或Groovy代碼,它會幫助我。

注:某些XML可能大至5MB。

回答

0

Usally你知道在BLOB列中的數據,這樣你就可以在SQL查詢解析..

如果它是一個文本列(varchar或類似的東西),你可以使用to_char(coloumName)

有很多的,你可以用你能找到他們在這個link

通常的功能,您將使用to_char/to_date/hexToRow/rowTohex

convert blob to file link

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邏輯的其餘部分你自己的。