oracle plsql: как анализировать XML и вставлять в таблицу
Как загрузить вложенный файл xml в таблицу базы данных?
Tom California Los angeles Jim California Los angeles
В этом xml имя – это имя таблицы, имя – это имя, Tom – его значение. Адрес является подтаблицей, а состояние и город – это две колонки внутри адреса. Я хочу вставить строку person в таблицу person, если она не удалась, не вставляйте в таблицу адресов. Этот xml может быть очень большим. Какое лучшее решение для этого?
- findViewById () возвращает null - попробовал ВСЕ
- Как анализировать неверный (плохой / неправильно сформированный) XML?
- Как читать и писать xml-файлы?
- Разрешены ли разрывы строк в значениях атрибутов XML?
- Как конвертировать ISO8601 TimeSpan в C # TimeSpan?
- Java-анализ XML-документа дает «Недопустимый контент в prologе». Error
- Был найден недопустимый символ XML (Unicode: 0xc)
- Как преобразовать XML в JSON с помощью C # / LINQ?
- Чтение больших XML-документов в .net
- Как разбирать тег с тем же именем в Android XML DOM Parsing
- Почему такая плохая идея анализировать XML с помощью регулярного выражения?
- xml.LoadData. Данные на корневом уровне недопустимы. Строка 1, позиция 1
- Как исправить ошибку: разметка в документе, следующая за корневым элементом, должна быть хорошо сформирована
Вы можете загрузить XML-документ в XMLType, а затем запросить его, например:
DECLARE x XMLType := XMLType( ' Tom California Los angeles
Jim California Los angeles
'); BEGIN FOR r IN ( SELECT ExtractValue(Value(p),'/row/name/text()') as name ,ExtractValue(Value(p),'/row/Address/State/text()') as state ,ExtractValue(Value(p),'/row/Address/City/text()') as city FROM TABLE(XMLSequence(Extract(x,'/person/row'))) p ) LOOP -- do whatever you want with r.name, r.state, r.city END LOOP; END;
select * FROM XMLTABLE('/person/row' PASSING xmltype(' Tom California Los angeles
Jim California Los angeles
') COLUMNS --describe columns and path to them: name varchar2(20) PATH './name', state varchar2(20) PATH './Address/State', city varchar2(20) PATH './Address/City' ) xmlt ;
CREATE OR REPLACE PROCEDURE ADDEMP (xml IN CLOB) AS BEGIN INSERT INTO EMPLOYEE (EMPID,EMPNAME,EMPDETAIL,CREATEDBY,CREATED) SELECT ExtractValue(column_value,'/ROOT/EMPID') AS EMPID ,ExtractValue(column_value,'/ROOT/EMPNAME') AS EMPNAME ,ExtractValue(column_value,'/ROOT/EMPDETAIL') AS EMPDETAIL ,ExtractValue(column_value,'/ROOT/CREATEDBY') AS CREATEDBY ,ExtractValue(column_value,'/ROOT/CREATEDDATE') AS CREATEDDATE FROM TABLE(XMLSequence( XMLType(xml))) XMLDUMMAY; COMMIT; END;
Вам нужно будет написать много кода для обработки сложных XML-файлов с помощью Oracle. Если у вас большие объемы XML, производительность также может быть проблемой. XML-парсеры classа предприятия позволят обрабатывать большие объемы сложных XML-файлов в реляционном формате без написания кода. Это сообщение в блоге показывает, как загружать сложные XML-файлы в Oracle без написания кода