引用博文:https://blog.csdn.net/zhou920786312/article/details/72799697?utm_source=itdadao&utm_medium=referralsql
外部表
1外部表是能夠讀取存儲在操做系統下,文件系統中的數據的一種只讀表
2外部表的數據能夠存儲在oracle數據庫外部的操做系統文件中,oracle數據庫能夠讀取這些數據,可是不能修改。
3使用oracle的外部表能夠很容易的將一個格式化的文本文件虛擬成數據庫的表,而且能夠使用select語句去訪問。數據庫
建立外部表
案例服務器
create table student5(
id NUMBER(5),
name VARCHAR(12),
sex VARCHAR(8),
age NUMBER(3),
grand NUMBER(1)
)organization external(
type oracle_loader
default directory external_student
access parameters(
fields terminated by ‘,’ )
location (‘student.csv’)
);數據結構
organization external:用來設置外部表的選項
type :指定訪問外部表數據文件時,所使用的訪問區段程序。這個區段程序能夠將文件格式轉換爲服務器能夠接受的格式
oracle_loader:訪問區段程序,默認使用這個
default directory:指定訪問目錄,告訴數據庫外部文件存放的位置
external_student:目錄名
access parameters:指定區段程序訪問外部數據文件時,進行轉換的參數設置。
fields terminated by:制定分割符
location :指定訪問的文件oracle
建立外部表步驟
1建立外部文件
2建立文件目錄
create directory external_student as ‘F:\test\externalTable’;
3建立表spa
create table student5( id NUMBER(5), name VARCHAR(12), sex VARCHAR(8), age NUMBER(3), grand NUMBER(1) )organization external( type oracle_loader default directory external_student access parameters( fields terminated by ',' ) location ('student.csv') );
4驗證操作系統
問題
SQL> select * from student5; select * from student5 * 第 1 行出現錯誤: ORA-29913: 執行 ODCIEXTTABLEFETCH 調出時出錯 ORA-30653: 已達到拒絕限制值 解決 建表最後添加 reject limit unlimited; create table student5( id NUMBER(5), name VARCHAR(12), sex VARCHAR(8), age NUMBER(3), grand NUMBER(1) )organization external( type oracle_loader default directory external_student access parameters( fields terminated by ',' ) location ('student.csv') ) reject limit unlimited; 驗證 SQL> select * from student5; 未選定行 解決:表的數據結構不對 student.csv修改成這樣 1,lia,男,16,1001 2,lib,男,17,1001 3,lic,男,18,1001 4,lid,男,19,1001 5,lie,男,20,1001 驗證 SQL> select * from student5; 未選定行 解決: 由於 grand NUMBER(1),因此咱們將1001改成1 驗證 select * from student5; ID NAME SEX AGE GRAND ------ ------------ -------- ---------- ---------- 1 lia 男 16 1 2 lib 男 17 1 3 lic 男 18 1 4 lid 男 19 1 5 lie 男 20 1