Загрузка данных из одной базы данных Oracle в другую. - PullRequest
0 голосов
/ 27 января 2012

Я хотел сделать одноразовую загрузку из одного источника Oracle db в пункт назначения oracle db. он не может выполнять прямую загрузку / выгрузку или импорт / экспорт данных, так как различные таблицы структурируют столбцы в источнике и в месте назначения. так что это требует хорошего преобразования, Мой план состоит в том, чтобы получить данные в формате XML из исходной БД и обработать XML в БД назначения. а также объем данных будет больше (от 1 до 20+ миллионов записей или более в некоторых таблицах), а задействованные базы данных: Oracle (источник) и Oracle (пункт назначения), Пожалуйста, предоставьте некоторые лучшие практики или лучший способ сделать это.

1 Ответ

2 голосов
/ 27 января 2012

Я не уверен, что понимаю, почему вы не можете выполнить прямую загрузку.

Если вы создаете ссылку на базу данных в целевой базе данных, которая указывает на исходную базу данных, вы можете затем поместить свою логику ETL в операторы SQL, которые SELECT из исходной базы данных и INSERT в целевую базу данных. Это избавляет от необходимости записывать данные в плоский файл, читать этот плоский файл, анализировать XML и т. Д., Что будет медленным и потребует достаточного количества кода. Таким образом, вы можете сосредоточиться на логике ETL и максимально эффективно переносить данные.

Вы можете написать SQL (или PL / SQL), который загружается непосредственно из старой структуры таблиц в старой базе данных в новую структуру таблиц в новой базе данных.

INSERT INTO new_table( <<list of columns>> )
  SELECT a.col1, a.col2, ... , b.colN, b.colN+1
    FROM old_table_1@link_to_source a,
         old_table_2@link_to_source b
   WHERE <<some join condition>>
...