sql*loader
使用的文件有﹕
input datafile: 要上載到數據庫的數據源
controlfile: 指示sql*loader如何解釋input datafile的內容及如何利用從input datafile中抽取的記錄
logfile:
bad file: 被sql*loader丟棄的記錄(原因可能是這些記錄與controlfile所期望的格式不一致)或被數據庫丟棄
的記錄(如﹕insert操作違反完整性約束) 會寫入到bad file
rejectfile: 如果成功的從inputfile中抽取出記錄﹐但由于不匹配記錄選擇標准而被丟棄的記錄會寫入到
rejectfile
sql*loader能夠理解的格式包括﹕定長記錄格式﹑可變記錄格式﹑流記錄格式﹐使用那種格式有controlfile指定﹕
Sample:
1.定長格式﹕
load data
infile 'fixed.dat' "fix 15"
into table names
fields terminated by ','
(first,last)
fixed.dat內容﹕
John,Watsonaaa
Damir,Bersinic
McGraw,Hillaaa
即把數據解析為長度為15個字節的記錄(其中一個字節必須用于記錄的回車終止符)
2.變長格式
load data
infile 'names.dat' "var 3"
into table names
fields terminated by ','
(first,last)
names.dat內容﹕
012John,Watson
015Damir,Bersinic
012McGraw,Hill
前邊三個數字標識記錄長度。
3.流記錄格式﹐該格式最為靈活﹐速度也最慢﹐因為sql*loader必須掃描每條記錄的記錄終止符。
load data
infile 'names.dat' "str '\n' "
into table names
fields terminated by ','
(first,last)
names.dat內容﹕
load data
infile 'fixed.dat' "fix 15"
into table names
fields terminated by ','
(first,last)
常規加載為直觀的insert option,而對于直接加載(direct=y)來說﹐支持sql*loader會話的server process在內存中匯集數據塊﹐并且在避開數據庫高速緩存區的同時將這些數據塊直接寫入數據文件。
常規路徑加載與直接路徑加載比較
常規路徑加載 | 直接路徑加載 |
Commit使插入的數據永久 | 使用”數據保存”在指定表中包含新數據塊 |
生成撤消與重做 | 不生成撤消﹐但可以選擇是否生成重做 |
實施所有約束 | 實施pk﹑unique和not null約束 |
觸發插入trigger | 不觸發插入trigger |
適用與所有表 | 只適用于堆表 |
不對表進行鎖定 | 加載過程中為DML鎖定表 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13790829/viewspace-462707/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13790829/viewspace-462707/