Как мне параллельную прямую загрузку с использованием внешних таблиц Oracle?

Несколько лет назад Томас Кайт сказал это ( здесь):

Мое любимое использование внешних столов:

Загрузите этот действительно большой файл как можно скорее. Раньше настраивали сценарии для параллельной прямой загрузки пути. Координировать запуск указанных сценариев. Просмотрите файлы журнала, чтобы убедиться, что все они закончены. Разделите входной файл или используйте команду skip и загрузите, чтобы разделить файл вверх. Одним словом, боль в заднице.

Сейчас:

create table ET parallel;
create table new_table (...) parallel
as
select * from ET;

параллельная прямая траектория нагрузки сделана тривиальной.

За исключением того, что это не правильный синтаксис...

Как мне использовать внешние таблицы Oracle для выполнения "параллельной прямой загрузки"?

1 ответ

Параллельные возможности внешних таблиц несколько ограничены. Насколько я знаю, вам нужно либо иметь несколько файлов с одинаковым форматом, которые можно обрабатывать параллельно (см. Ниже), либо один файл с форматом фиксированной длины:

CREATE TABLE WORKING_HOURS_EXT
( employee_id       NUMBER(8), 
  project_id        VARCHAR2(20),
  start_time        VARCHAR2(25), 
  end_time         VARCHAR2(25)
) 
ORGANIZATION EXTERNAL 
( 
  TYPE ORACLE_LOADER 
  DEFAULT DIRECTORY loader_data_dir 
  ACCESS PARAMETERS 
  ( 
    records delimited by newline 
    fields terminated by ';' 
    ( employee_id, project_id, start_time, end_time
    ) 
  ) 
  LOCATION ('hours01.txt', 'hours02.txt', 'hours03.txt') 
) 
PARALLEL;

ALTER SESSION ENABLE PARALLEL DML;

MERGE INTO WORKING_HOURS a
USING WORKING_HOURS_EXT b ON (...
Другие вопросы по тегам