External Tables是对sql*loader的一个补充,它使你像访问数据库里的数据一样访问外部源数据。
1:外部表怎么被创建
CREATE TABLE...ORGANIZATION EXTERNAL
TYPE 指定外部表访问驱动类型。
两种选择。第一:ORACLE_LOADER ,这种类型只能完成数据装入,数据只能从文本数据文件中load
第二:ORACLE_DATAPUMP ,这种类型可以装入和卸出数据。数据必须来自dump files。
DEFAULT DIRECTORY 指定文件的存放路径,路径是通过directory指定,不是直接的操作系统路径。
ACCESS PARAMETERS。
LOCATION 是指定DIRECTORY地址中的文件。
SQL> CREATE TABLE emp_load
2 (employee_number CHAR(5),
3 employee_dob CHAR(20),
4 employee_last_name CHAR(20),
5 employee_first_name CHAR(15),
6 employee_middle_name CHAR(15),
7 employee_hire_date DATE)
8 ORGANIZATION EXTERNAL
9 (TYPE ORACLE_LOADER
10 DEFAULT DIRECTORY def_dir1
11 ACCESS PARAMETERS
12 (RECORDS DELIMITED BY NEWLINE
13 FIELDS (employee_number CHAR(2),
14 employee_dob CHAR(20),
15 employee_last_name CHAR(18),
16 employee_first_name CHAR(11),
17 employee_middle_name CHAR(11),
18 employee_hire_date CHAR(10) date_format DATE mask "mm/dd/yyyy"
19 )
20 )
21 LOCATION ('info.dat')
22 );
Table created.
然后:
SQL> INSERT INTO emp (emp_no,
2 first_name,
3 middle_initial,
4 last_name,
5 hire_date,
6 dob)
7 (SELECT employee_number,
8 employee_first_name,
9 substr(employee_middle_name, 1, 1),
10 employee_last_name,
11 employee_hire_date,
12 to_date(employee_dob,'month, dd, yyyy')
13 FROM emp_load);
这样数据就已经LOAD到emp表中了
2:外部表中的并行访问 a)使用ORACLE_LOADER的并行访问 ORACLE_LOADER访问驱动是把大的数据文件分成小的部分去处理。 b)使用ORACLE_DATAPUMP的并行访问 ORACLE_DATAPUMP可以把数据库中的数据导出到外部表对应的多个文件中去。 ORACLE_DATAPUMP还可以把多个DUMP文件