如何使用Oracle外部表并行直接路径加载?

Rud*_*ger 4 oracle load external-tables direct-path

几年前,Thomas Kyte说(这里):

我最喜欢使用外部表:

尽快加载这个非常大的文件.过去,将脚本设置为并行直接路径加载.协调所述脚本的触发.查看日志文件以确保它们全部完成.拆分输入文件或使用跳过并加载以对文件进行切片.总之,一个痛苦的屁股.

现在:

create table ET parallel;
create table new_table (...) parallel
as
select * from ET;
Run Code Online (Sandbox Code Playgroud)

并行直接路径负载变得微不足道.

除非这是无效的语法...

如何使用Oracle的外部表执行"并行直接路径加载"?

Cod*_*odo 5

外部表的并行功能有些限制.据我所知,你需要有几个文件具有可以并行处理的相同格式(见下文)或具有固定长度格式的单个文件:

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 (...
Run Code Online (Sandbox Code Playgroud)