简述数据库导入Oracle SQL*Loader指南
2008-09-02 12:47:15 来源:WEB开发网LOADDATA
INFILE’mydata.dat’BADFILE’mydata.bad’
DISCARDFILE’mydata.dis’
APPEND
INTOTABLEmy_selective_table
WHEN(01)<>;’H’and(01)<>;’T’
and(30:37)=’19991217’
(
regionCONSTANT’31’,
service_keyPOSITION(01:11)INTEGEREXTERNAL,
call_b_noPOSITION(12:29)char
)
导入时跳过某些字段:
可用 POSTION(x:y) 来分隔数据在Oracle8i中可以通过指定FILLER字段实现。FILLER 字段用来跳过、忽略导入数据文件中的字段。如:
LOADDATA
truncateINTOTABLET1
FIELDSTERMINATEDBY’,’
(field1,
field2FILLER,
field3
)
导入多行记录:
可以使用下面两个选项之一来实现将多行数据导入为一个记录:
CONCATENATE:-usewhenSQL*Loadershouldcombine
thesamenumberofphysicalrecordstogether
toformonelogicalrecord
CONTINUEIF-useifaconditionindicates
thatmultiplerecordsshouldbetreatedas
oneEgbyhavinga’#’characterincolumn1
SQL*Loader 数据的提交
一般情况下是在导入数据文件数据后提交的。也可以通过指定 ROWS= 参数来指定每次提交记录数。
提高 SQL*Loader 的性能:
(1) 一个简单而容易忽略的问题是,没有对导入的表使用任何索引和/或约束(主键)。如果这样做,甚至在使用ROWS=参数时,会很明显降低数据库导入性能。
(2) 可以添加 DIRECT=TRUE来提高导入数据的性能。当然,在很多情况下,不能使用此参数。
(3) 通过指定 UNRECOVERABLE选项,可以关闭数据库的日志。这个选项只能和 direct 一起使用。
(4) 可以同时运行多个导入任务。
常规导入与direct导入方式的区别:
常规导入可以通过使用 insert语句来导入数据。Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中。
赞助商链接