2013-12-20 3 views
0

У меня есть 2 таблицы, CONFIGURATION_INFO и CONFIGURATION_FILE. Я использую ниже запрос, чтобы найти все файлы сотрудникаИзвлечение/анализ XML-данных/элемента из столбца BLOB в Oracle

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

, но мне также нужно разобрать или извлекать данные из столбца больших двоичных объектов Filecontent и отобразить все cfg_id чей XML тег PCVERSION начинается с . Там в любом случае?

XML тег, который должен быть извлечен является <CSMCLIENT><COMPONENT><PCVERSION>8.1</PCVERSION></COMPONENT></CSMCLIENT>

XML

enter image description here

Это не должно быть какой-либо запрос, даже если это Java или заводной код, это помогло бы мне.

Примечание: Некоторые из XML могут быть размером 5 МБ.

ответ

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?

Так синтаксис для запроса вне XML из BLOB Content из базы данных с помощью этой функции XMLType.

Эта функция преобразует тип данных вашего столбца из BLOB в XMLType. Затем разберем его с помощью функции XPath.

Oracle Database

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

делают остальные WHERE логики самостоятельно.

Смежные вопросы