将数据导入多个表: 
如: 
  
    
      | LOAD DATA 
INFILE * 
REPLACE 
INTO TABLE emp 
WHEN empno != ' ' 
( empno POSITION(1:4) INTEGER EXTERNAL, 
ename POSITION(6:15) CHAR, 
deptno POSITION(17:18) CHAR, 
mgr POSITION(20:23) INTEGER EXTERNAL 
) 
INTO TABLE proj 
WHEN projno != ' ' 
( projno POSITION(25:27) INTEGER EXTERNAL, 
empno POSITION(1:4) INTEGER EXTERNAL 
      ) | 
  
导入选定的记录: 
如下例: (01) 代表第一个字符, (30:37) 代表30到37之间的字符: 
  
    
      | LOAD DATA 
INFILE 'mydata.dat' BADFILE 'mydata.bad' 
DISCARDFILE 'mydata.dis' 
APPEND 
INTO TABLE my_selective_table 
WHEN (01) <>; 'H' and (01) <>; 'T' 
and (30:37) = '19991217' 
( 
region CONSTANT '31', 
service_key POSITION(01:11) INTEGER EXTERNAL, 
call_b_no POSITION(12:29) CHAR 
      ) | 
  
导入时跳过某些字段: 
可用 POSTION(x:y) 来分隔数据在Oracle8i中可以通过指定FILLER字段实现。FILLER 字段用来跳过、忽略导入数据文件中的字段。如: 
  
    
      | LOAD DATA 
TRUNCATE INTO TABLE T1 
FIELDS TERMINATED BY ',' 
( field1, 
field2 FILLER, 
field3 
      ) | 
  
导入多行记录: 
可以使用下面两个选项之一来实现将多行数据导入为一个记录: 
  
    
      | CONCATENATE: - use when SQL*Loader should combine 
the same number of physical records together 
to form one logical record
CONTINUEIF - use if a condition indicates 
that multiple records should be treated as 
      oneEgby having a '#' character in column 1 | 
  
SQL*Loader 数据的提交 
一般情况下是在导入数据文件数据后提交的。也可以通过指定 ROWS= 参数来指定每次提交记录数。 
提高 SQL*Loader 的性能: 
(1) 一个简单而容易忽略的问题是,没有对导入的表使用任何索引和/或约束(主键)。如果这样做,甚至在使用ROWS=参数时,会很明显降低数据库导入性能。 
(2) 可以添加 DIRECT=TRUE来提高导入数据的性能。当然,在很多情况下,不能使用此参数。 
(3) 通过指定 UNRECOVERABLE选项,可以关闭数据库的日志。这个选项只能和 direct 一起使用。 
(4) 可以同时运行多个导入任务。 
常规导入与direct导入方式的区别: 
常规导入可以通过使用 INSERT语句来导入数据。Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中。
查看本文来源