外部表載入資料(ExternalTables)
支援資料庫版本:10gR2
1 選用 sqlldr 而不是外部表的情況
1-1 必須透過網路載入資料, 輸入檔案不在資料庫伺服器上
1-2 多使用者使用相同的外部表處理不同的輸入檔案
1-3 LOB 型別
2 建立外部表 (利用 sqlldr 控制檔案建立)
sqlldr go/go ldr.ctl external_table=generate_only
如果使用 direct=true 則會覆蓋 external_table=generate_only 選項
3 建立Directory物件
create directory extdir as '/tmp/script';
grant read,write on directory extdir to go;
4 建立外部表
4-1 oracle_loader 方式
每次訪問外部表產生的log, bad, dsc檔案也可以透過外部表形式讀取
create table ext_tbl (col1 varchar2(10),col2 number)
organization external
(
type oracle_loader default directory extdir
access parameters
(
records delimited by newline
fields terminated by ","
(col1,col2)
)
location('test.dat')
);
4-2 oracle_datapump 方式
可以載入, 解除安裝(匯出)資料
只會產生log檔案, 沒有bad, dsc檔案
- 修改外部表
-- 表結構
於普通表相同,修改後access parameters中也要作相應修改
-- 訪問驅動
alter table ext_tbl default directory dir_name;
-- 載入引數
要修改的部分所有引數必須重新定義
alter table ext_tbl access parameters (records delimited by newline fields terminated by ":" (col1,col2));
-- 載入路徑
alter table ext_tbl location ('filename');
- 載入多個檔案
各個檔案格式必須能被access parameters定義所識別
alter table ext_tbl location ('filename1','filename2');
- 載入效率最佳化
parallel,nologfile,nodiscardfile,nobadfile
sqlldr中的最佳化引數也同樣有效(訪問驅動為oracle_loader時)
insert /*+ append */ into tbl select * from ext_tbl; ---歸檔並且forcelogging時append失效
- 載入驅動
-- oracle_loader
--- 格式化記錄
記錄分隔方式
records fixed 20 --- 定長,20位產生一條記錄
records variable 4 --- 行記錄前4位代表此行長度
records delimited by newline --- 換行符為一條記錄終結
records delimited by '|' --- | 為一條記錄終結
載入條件
load when (col1 != 1) --- col1 != 1 的記錄載入
輸出檔案
logfile 'filename'/nologfile
badfile 'filename'/nobadfile
discardfile 'filename'/nodiscardfile
緩衝區
readsize --- 預設1M
date_cache --- 預設1000條
跳過記錄數
skip 10
--- 處理資料行
fields terminated by ',' --- 列分隔
missing field values are null --- 某列沒有值則以NULL載入
reject rows with all null fields --- 所有列都沒值則跳過該記錄,不指定則各列均以NULL載入
--- 列定義
col1 (1:5) char(5) --- 列名,長度(僅定長),型別,預設值
-- oracle_datapump ???
1 選用 sqlldr 而不是外部表的情況
1-1 必須透過網路載入資料, 輸入檔案不在資料庫伺服器上
1-2 多使用者使用相同的外部表處理不同的輸入檔案
1-3 LOB 型別
2 建立外部表 (利用 sqlldr 控制檔案建立)
sqlldr go/go ldr.ctl external_table=generate_only
如果使用 direct=true 則會覆蓋 external_table=generate_only 選項
3 建立Directory物件
create directory extdir as '/tmp/script';
grant read,write on directory extdir to go;
4 建立外部表
4-1 oracle_loader 方式
每次訪問外部表產生的log, bad, dsc檔案也可以透過外部表形式讀取
create table ext_tbl (col1 varchar2(10),col2 number)
organization external
(
type oracle_loader default directory extdir
access parameters
(
records delimited by newline
fields terminated by ","
(col1,col2)
)
location('test.dat')
);
4-2 oracle_datapump 方式
可以載入, 解除安裝(匯出)資料
只會產生log檔案, 沒有bad, dsc檔案
- 修改外部表
-- 表結構
於普通表相同,修改後access parameters中也要作相應修改
-- 訪問驅動
alter table ext_tbl default directory dir_name;
-- 載入引數
要修改的部分所有引數必須重新定義
alter table ext_tbl access parameters (records delimited by newline fields terminated by ":" (col1,col2));
-- 載入路徑
alter table ext_tbl location ('filename');
- 載入多個檔案
各個檔案格式必須能被access parameters定義所識別
alter table ext_tbl location ('filename1','filename2');
- 載入效率最佳化
parallel,nologfile,nodiscardfile,nobadfile
sqlldr中的最佳化引數也同樣有效(訪問驅動為oracle_loader時)
insert /*+ append */ into tbl select * from ext_tbl; ---歸檔並且forcelogging時append失效
- 載入驅動
-- oracle_loader
--- 格式化記錄
記錄分隔方式
records fixed 20 --- 定長,20位產生一條記錄
records variable 4 --- 行記錄前4位代表此行長度
records delimited by newline --- 換行符為一條記錄終結
records delimited by '|' --- | 為一條記錄終結
載入條件
load when (col1 != 1) --- col1 != 1 的記錄載入
輸出檔案
logfile 'filename'/nologfile
badfile 'filename'/nobadfile
discardfile 'filename'/nodiscardfile
緩衝區
readsize --- 預設1M
date_cache --- 預設1000條
跳過記錄數
skip 10
--- 處理資料行
fields terminated by ',' --- 列分隔
missing field values are null --- 某列沒有值則以NULL載入
reject rows with all null fields --- 所有列都沒值則跳過該記錄,不指定則各列均以NULL載入
--- 列定義
col1 (1:5) char(5) --- 列名,長度(僅定長),型別,預設值
-- oracle_datapump ???
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22558114/viewspace-1097763/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 海量資料遷移之外部表載入
- 用SQL*Loader載入外部資料SQL
- 如何動態載入外部樣式表
- greenplum使用gpfdist與外部表高效匯入資料
- Oracle 巧用外部表將大量excel資料匯入資料庫OracleExcel資料庫
- 【scikit-learn基礎】--『資料載入』之外部資料集
- Script載入順序 & 外部樣式表的阻塞
- InnoDB資料字典--字典表載入
- 【移動資料】External Table 外部表
- 使用sqlload匯入外部資料SQL
- 海量資料遷移之外部表切分
- 巧用外部表備份歷史資料
- k8s env、configmap、secret外部資料載入配置K8S
- jQuery動態載入更新外部樣式表程式碼例項jQuery
- oracle外部表實現大資料量的Excel匯入Oracle大資料Excel
- 使用oracle外部表進行資料泵解除安裝資料Oracle
- 海量資料處理_使用外部表進行資料遷移
- js實現的動態載入css外部樣式表程式碼JSCSS
- pandas的外部資料匯入與常用方法
- 資料載入
- 海量資料遷移之外部表並行抽取並行
- 外部表的另一種用途 資料遷移
- 外部表在Oracle資料庫中使用心得Oracle資料庫
- Linux:掛載外部U盤,移動資料Linux
- 資料泵對已經存在的表載入索引索引
- 使用Oracle外部身份認證登入資料庫Oracle資料庫
- 增量資料載入
- 【sqlldr載入資料】SQL
- 使用sqlldr載入外部檔案中的資料到Oracle中(轉)SQLOracle
- 報表載入大資料時顯示進度條大資料
- 測試TOM=SQLLOADER載入製表符號資料SQL符號
- 【實驗】【外部表】以資料泵檔案格式抽取and遷移資料演示
- Oracle外部表Oracle
- Oracle 外部表Oracle
- Excel 表匯入資料Excel
- maven工程載入外部jar檔案的方法MavenJAR
- HBase載入大資料大資料
- ETL資料載入策略