5

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

我最喜欢使用外部表:

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

现在:

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

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

除了这不是有效的语法......

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

4

1 回答 1

6

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

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 (...
于 2011-01-05T18:17:56.817 回答