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

时间:2011-01-05 16:03:10

标签: oracle load external-tables direct-path

几年前,Thomas Kyte说过这个问题(here):

  

我最喜欢使用外部表:

     

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

     

现在:

create table ET parallel;
create table new_table (...) parallel
as
select * from ET;
     并行直接路径负载变得微不足道。

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

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

1 个答案:

答案 0 :(得分: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 (...