Oracle 創建外部表


 

  Oracle 外部表能迅速的將海量的數據導入到數據庫里面,外部表的創建使用步驟如下:

  

  1 創建一個Directory:必須用sys用戶創建,用戶存放外部數據文件。

  create directory DIR_DATA as '/home/oracle/oradata/IN';

  給用戶授權目錄的使用權限,否則用戶不能訪問該目錄以及其下的文件

  grant write,read on directory DIR_DATA to Test;

 

  2 將要導入的外部數據文件,test.csv 放到目錄下,注意文件每個字段的分隔符,此處csv每列的分隔符為英文的分號";" 內容如下

NAME;NAME_DESC
Latiny1;latiny test file
Latiny2;latiny test file
Latiny3;latiny test file
Latiny4;latiny test file
Latiny5;latiny test file
Latiny6;latiny test file
Latiny7;latiny test file
Latiny8;latiny test file
Latiny9;latiny test file
Latiny10;latiny test file

 

  3 創建語句

create table ext_test
(
name char(256),
name_desc char(256)
)
organization external
(
type oracle_loader
default directory DIR_DATA
access parameters
(
records delimited by newline
badfile dir_ctrr_data:'test..bad'
logfile dir_ctrr_data:'test..log'
discardfile dir_ctrr_data:'test..dsc'
skip 1
fields terminated by';'
reject rows with all null fields
(
NAME char(256),
NAME_DESC char(256)
)
)
location ('test.csv')
)
reject limit unlimited
parallel;

 

  參數說明:

1) organization external  -- 關鍵字,必須要有。以表明定義的表為外部表。
2) type           -- 外部表的類型
oracle_loader        -- 定義外部表的缺省方式,只能只讀方式實現文本數據的裝載。
oracle_datapump      -- 支持對數據的裝載與卸載,數據文件必須為二進制dump文件。可以從外部表提取數據裝載到內部表,也可以從內部表卸載數據作為二進制文件填充到外部表。


3) default directory        --缺省的目錄指明了外部文件所在的路徑
4) location          -- 定義了外部表的位置
5) access parameters         -- 描述如何對外部表進行訪問
records  -- 關鍵字后定義如何識別數據行
delimited by 'xxx'    --換行符,常用newline定義換行,並指明字符集。對於特殊的字符則需要單獨定義,如特殊符號,可以使用ox'十六位值',例如tab(/t)的十六位是9,則delimitedby0x'09';cr(/r)的十六位是d,那么就是delimitedby0x'0d'。
skip x   -- 跳過x行數據,有些文件中第一行是列名,需要跳過第一行,則使用skip 1。
fields   -- 關鍵字后定義如何識別字段,常用的如下:
fields:terminated by 'x'   --字段分割符。
enclosed by 'x'        --字段引用符,包含在此符號內的數據都當成一個字段。例如一行數據格式如:"abc","a""b,""c,"。使用參數terminated by ',' enclosed by '"'后,系統會讀到兩個字段,第一個字段的值是abc,第二個字段值是a"b,"c,。
lrtrim               --刪除首尾空白字符。
missing field values are null  --某些字段空缺值都設為null。對於字段長度和分割符不確定且准備用作外部表文件,可以使用ultraedit、editplus等來進行分析測試,如果文件較大,則需要考慮將文件分割成小文件並從中提取數據進行測試。


6) fields terminated by ","        --描述字段的終止符
7) reject limit unlimited         --描述允許的錯誤數,此處為無限制

 

  4 查看數據

  select * from ext_test;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM