Nov 18, 2012 18:56
Приветствую всех!!!
Возник праздный вопрос(праздный потому как задача уже решена и хочется поговорить на тему).
Какие наиболее разумные способы разбора XML в таблицу вы знаете и пользуетесь?
Я вот подсмотрел решение такое:
INSERT INTO talks(contact , from_ , time_ , date_ , protocol , id_ , type_ , file_ , url_ , msg)
WITH t AS (SELECT xmltype(bfilename('TEST_DIR','arseniiv.xml'), nls_charset_id('CL8MSWIN1251')) xmlcol FROM dual)
SELECT
extractValue(value(x),'/EVENT/CONTACT') co,
extractValue(value(x),'/EVENT/FROM') f,
extractValue(value(x),'/EVENT/TIME') t,
extractValue(value(x),'/EVENT/DATE') d,
extractValue(value(x),'/EVENT/PROTOCOL') p,
extractValue(value(x),'/EVENT/ID') i,
extractValue(value(x),'/EVENT/TYPE') ty,
extractValue(value(x),'/EVENT/FILE') fi,
extractValue(value(x),'/EVENT/URL') ur,
extractValue(value(x),'/EVENT/MESSAGE') mes
FROM t,TABLE(XMLSequence(extract(t.xmlcol,'/IMHISTORY/EVENT'))) x;
Ну соответственно у меня тут еще создана Directory в базе.
Как еще можно решить подобную задачу? Есть ли другой SQL-Approach?
Ну про загрузку через внешний загрузчик я знаю - это не интересно)