SQL*Loader是Oracle數據庫導入外部數據的一個工具
如何使用 SQL*Loader 工具
我們可以用Oracle的sqlldr工具來導入數據
sqlldr scott/tiger control=loader
控制文件(loader
load data
infile
into table emp
fields terminated by
( empno
mydata
下面是一個指定記錄長度的示例控制文件
load data
infile *
replace
into table departments
( dept position (
deptname position (
)
begindata
COSC COMPUTER SCIENCE
ENGL ENGLISH LITERATURE
MATH MATHEMATICS
POLY POLITICAL SCIENCE
Unloader這樣的工具
Oracle 沒有提供將數據導出到一個文件的工具
set echo off newpage
spool oradata
select col
from tab
where col
spool off
另外
rem Remember to update initSID
declare
fp utl_file
begin
fp := utl_file
utl_file
utl_file
end;
/
當然你也可以使用第三方工具
加載可變長度或指定長度的記錄
如
LOAD DATA
INFILE *
INTO TABLE load_delimited_data
FIELDS TERMINATED BY
TRAILING NULLCOLS
( data
data
)
BEGINDATA
下面是導入固定位置(固定長度)數據示例
LOAD DATA
INFILE *
INTO TABLE load_positional_data
( data
data
)
BEGINDATA
跳過數據行
可以用
LOAD DATA
INFILE *
INTO TABLE load_positional_data
SKIP
( data
data
)
BEGINDATA
導入數據時修改數據
在導入數據到數據庫時
LOAD DATA
INFILE *
INTO TABLE modified_data
( rec_no
region CONSTANT
time_loaded
data
data
data
)
BEGINDATA
LOAD DATA
INFILE
BADFILE
APPEND
INTO TABLE mailing_list
FIELDS TERMINATED BY
( addr
city
state
zipcode
mailing_addr
mailing_city
mailing_state
)
將數據導入多個表
如:
LOAD DATA
INFILE *
REPLACE
INTO TABLE emp
WHEN empno !=
( empno POSITION(
ename POSITION(
deptno POSITION(
mgr POSITION(
)
INTO TABLE proj
WHEN projno !=
( projno POSITION(
empno POSITION(
)
導入選定的記錄
如下例
LOAD DATA
INFILE
APPEND
INTO TABLE my_selective_table
WHEN (
(
region CONSTANT
service_key POSITION(
call_b_no POSITION(
)
導入時跳過某些字段
可用 POSTION(x:y) 來分隔數據
LOAD DATA
TRUNCATE INTO TABLE T
FIELDS TERMINATED BY
( field
field
field
)
導入多行記錄
可以使用下面兩個選項之一來實現將多行數據導入為一個記錄:
CONCATENATE:
CONTINUEIF
SQL*Loader 數據的提交
一般情況下是在導入數據文件數據後提交的
也可以通過指定 ROWS= 參數來指定每次提交記錄數
提高 SQL*Loader 的性能
常規導入與direct導入方式的區別
常規導入可以通過使用 INSERT語句來導入數據
From:http://tw.wingwit.com/Article/program/Oracle/201311/18507.html