Oracle PL / SQL для загрузки XML - PullRequest
1 голос
/ 14 марта 2011

Я не знаю, как лучше спросить об этом, но позвольте мне объяснить проблему, и она может помочь.

В настоящее время у нас есть поток данных, который передается нам через концентратор Oracle OAI.Данные передаются нам с использованием DBLinks.

Поставщик информации будет обновляться до Oracle ODI и по многим причинам требует, чтобы вся передача данных осуществлялась с использованием зашифрованных XML-файлов через SFTP.

Теперь это представляет новую проблему для нас как получателей данных, поскольку теперь нам нужно внести изменения в наши системы, чтобы загружать данные XML в таблицы, которые когда-то были заполнены DBLinks.

Настройка, которую мы в настоящее время имеем,:

  • Oracle 10g (10.2.0.4)
    • Oracle работает на Unix (HP-UX)
  • Многочисленные серверы Win2k3, управляющие интерфейсом/ Поток ETL.

Таким образом, в настоящее время концентратор OAI будет помещать данные в несколько таблиц на нашем уровне ETL.Скажем, например, «ЧЕЛОВЕК».Структура этой таблицы, я не верю, имеет значение ...

Когда данные загружены в таблицу PERSON, доставка OAI передаст маркер конца файла в базу данных, которая сохраняется вТаблица «EOF» - содержит количество полученных записей, ожидаемых в «ЛИЦО».

На сервере Windows есть пакетный процесс, который опрашивает каждые 30 секунд, он проверяет, существует ли запись EOF, если она существуетзатем он запускает нашу обработку ETL.

Я хочу по возможности избежать изменения этой части системы, поэтому в качестве решения я предлагаю проанализировать новые XML-файлы и загрузить их в базу данных Oracle,вопрос в том, как лучше всего это сделать:

  • XML-файлы будут доставлены на серверы Windows
  • Предпочтение будет отдаваться PL / SQL для загрузки данных

Каков наилучший способ загрузки данных в базу данных Oracle (Unix) с исходными данными на стороне Windows.

Я хочу избежать необходимостииспользуйте любые сценарии Unix, если это возможно - поскольку моей команде разработчиков не хватает опыта Unix, чтобы позволить им в этом разобраться.

Любые предложения будут благодарны.

Формат XML такой, как ниже -и имена элементов сопоставляются с именами столбцов в БД:

<PERSON>
  <HEADER>
    <Creator>~</Creator>
    <DigitalSigniture>~</DigitalSigniture>
    <Owner>~</Owner>
    <Title>~</Title>
    <Marking>~</Marking>
   </HEADER>

   <PERSONS>
     <EMPLOYEE_NUMBER>~</EMPLOYEE_NUMBER>
     <FIRST_NAME>~</FIRST_NAME>
     <LAST_NAME>~</LAST_NAME>
     ......
   </PERSONS>
<PERSON>

РЕДАКТИРОВАТЬ: я также осознаю объемы, в обычный (средний) день я буду обрабатывать около 80 000 записей XML, и в исключительный день ябудет обрабатывать до 300 000 (как правило, один раз в год).

Ответы [ 3 ]

2 голосов
/ 14 марта 2011

Чтобы уничтожить ваш XML и загрузить их в Oracle-таблицы, вы можете использовать методику, описанную мной в этом посте: http://rwijk.blogspot.com/2010/03/shredding-xml-into-multiple-tables-in.html

С уважением,
Роб.

Некоторые ссылкидля загрузки файлов: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14259/xdb25loa.htm#ADXDB2900
http://www.oracle -develop.net / display.php? id = 416

0 голосов
/ 04 мая 2017

Если вам необходимо проанализировать большие объемы XML-файлов ИЛИ очень сложные XML-файлы на основе одного из многих отраслевых стандартов данных, например, NDC, XBRL, FPML, ISO20022 и т. Д., Лучше всего использовать специальный инструмент для выполненияработа.Flexter Data Liberator может автоматизировать весь процесс анализа XML в Oracle без написания единой строки кода

0 голосов
/ 14 марта 2011

Я бы предложил забыть о встроенных функциях Oracle XML и использовать любой нормальный язык для обработки XML-файлов на «стороне клиента» и отправки готовых данных в БД. (Ищите Python или .NET)

Это может представлять угрозу безопасности, если вы разрешаете доступ к файловой системе сервера БД из сети.

80 000 записей в день не должны быть большой проблемой для Oracle. Мы делаем гораздо ближе к реальному времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...