日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

外部表External table

發(fā)布時間:2025/5/22 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外部表External table 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
把一個普通的文本格式的OS文件看作是Oracle數(shù)據(jù)庫的外部表,Oracle可以象普通表一樣進(jìn)行select 操作,可以建視圖,可以與其他進(jìn)行連接等,但不能對其進(jìn)行DML操作,即該表是只讀的!(10g里可借此導(dǎo)出數(shù)據(jù)至平面dmp文件)。
External table和正規(guī)的表很相似,以下的幾點需要注意:

l 數(shù)據(jù)在數(shù)據(jù)庫的外部組織,是操作系統(tǒng)文件。 
l 操作系統(tǒng)文件在數(shù)據(jù)庫中的標(biāo)志是通過一個邏輯目錄來映射的。    
l 數(shù)據(jù)是只讀的。(外部表相當(dāng)于一個只讀的虛表) 
l 不可以在上面運行任何DML操作,不可以創(chuàng)建索引。  
l 可以查詢操作和連接,可以并行操作。

假設(shè)如下的兩個平面文件
    1.dat:
7301,SMITH,CLERK,7902,17-DEC-80,100,0,20
7402,ALLEN,SALESMAN,7698,20-FEB-81,250,0,30
7503,WARD,SALESMAN,7698,22-FEB-81,450,0,30
7504,JONES,MANAGER,7839,02-APR-81,1150,0,20
 2.dat:
7611,MARTIN,SALESMAN,7698,28-SEP-81,1250,0,30
7612,BLAKE,MANAGER,7839,01-MAY-81,1550,0,30
7913,MILLER,CLERK,7782,23-JAN-82,3500,0,10
創(chuàng)建一個邏輯目錄:
CREATE DIRECTORY DIR_TEST AS 'D:TEMP';
定義外部表:
CREATE TABLE EXT1
emp_id number(4),
ename varchar2(12),
job varchar2(12) ,
mgr_id??number(4) ,
hiredate date,
salary number(8),
comm number(8),
dept_id number(2))
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY DIR_TEST
ACCESS PARAMETERS(RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ',')
LOCATION('1.DAT','2.DAT'))
查詢外部表:
select * from ext1;
得到外部表的有關(guān)信息:
SELECT OWNER,TABLE_NAME,DEFAULT_DIRECTORY_NAME,ACCESS_PARAMETERS
FROM DBA_EXTERNAL_TABLES;
select * from DBA_EXTERNAL_LOCATIONS;

===================================================

升級Oracle中的外部表

--創(chuàng)建邏輯目錄dirls,外部表數(shù)據(jù)文件所在位置
CREATE OR REPLACE directory DIR_x1 as 'd:dbexp';
--創(chuàng)建外部表結(jié)構(gòu)create table x1
(c1 VARCHAR2(10)
, c2 VARCHAR2(10)
)
organization external
( type oracle_loader
default directory dir_x1
access parameters ( records delimited by newline
badfile 'x1.bad'
discardfile 's1.dis'
logfile 'x1.log'
fields terminated by ','
optionally enclosed by '"'
missing field values are null
)
location ('x1.txt','x2.txt')
)

http://www.softhouse.com.cn/html/200509/2005090516013200010796.html

甲骨文(Oracle)數(shù)據(jù)庫的外部表(external tables ),作為一個平臺文件,在支撐Oracle SQL的時候,對整合Oracle數(shù)據(jù)倉庫以及“寄生”在服務(wù)器上的表數(shù)據(jù)的外部元數(shù)據(jù)起著至關(guān)重要的作用。

此外,外部表也可用來當(dāng)作“csv”文件,允許這種類型的外部表數(shù)據(jù)在微軟的Excel電子數(shù)據(jù)表中得以使用。

一個名為Peter Kok的技術(shù)人員,發(fā)布了一則Oracle外部表獲得升級的技巧,他列出的操作步驟如下:

1、在外部表中定義一個“view”;

2、在這個“view”中,分別為“插入”、“更新”和“刪除”定義一個“INSTEAD OF”型的triggers;

3、在這些triggers中,編寫PL/SQL以執(zhí)行必要的處理過程。

Kok接著出示了例子的代碼,還提供了這項技術(shù)的免費下載,在最后也提出了一些重要的“警告”:

The problem is with doing a multiple delete (i.e. a delete statement that affects more than one row). As we noted before, the INSTEAD OF trigger is implicitly for each row. This means statement-level information is unavailable.


例子如下所示:

create or replace view emp_ext_tab_vw
as
select rownum rownumber
, emp.empno empno
, emp.ename ename
, emp.job job
, emp.mgr mgr
, emp.hiredate hiredate
, emp.sal sal
, emp.comm comm
, emp.deptno deptno
from emp_ext_tab emp
order by rownumber asc
/

create or replace trigger emp_ext_tab_vw_brd
instead of delete on emp_ext_tab_vw
begin
--
emp_ext_tab_dml.delete_record ( :OLD.rownumber );
--
end;
/

10g里可借此導(dǎo)出數(shù)據(jù)至平面dmp文件:http://www.orafaq.com/node/848

create table x_1
organization external
( type oracle_datapump
default directory dir_dmp
location ('x_1.dmp')
) as
select owner,table_name,tablespace_name from dba_tables where owner='XSB';

select * from x_1;

create table x_2 (
owner varchar2(100),table_name varchar2(100),tablespace_name varchar2(100)
)
organization external
( type oracle_datapump
default directory dir_dmp
location ('x_1.dmp')
);

總結(jié)

以上是生活随笔為你收集整理的外部表External table的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。