一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

[轉(zhuǎn)] 關(guān)于oracle外部表的使用_oracle學習筆記

 荷露叮咚 2009-06-02
[轉(zhuǎn)] 關(guān)于oracle外部表的使用
2008-12-11 22:19
版權(quán)聲明:轉(zhuǎn)載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://abovethesky./logs/414271.html
www.

什么是外部表?

External table 和正規(guī)的表很相似,具體的定義可以參見《Oracle 概念手冊》,以下的幾點需要注意:

    > 創(chuàng)建的語法類似于: "CREATE TABLE ... ORGANIZATION EXTERNAL"

    > 數(shù)據(jù)在數(shù)據(jù)庫的外部組織,是操作系統(tǒng)文件。

    > 操作系統(tǒng)文件在數(shù)據(jù)庫中的標志是通過一個邏輯目錄來映射的。        

    > 數(shù)據(jù)是只讀的。(外部表相當于一個只讀的虛表)

    > 不可以在上面運行任何 DML 操作,不可以創(chuàng)建索引。     

    > 可以查詢操作和連接??梢圆⑿胁僮鳌?

例子:

假定有如下的兩個數(shù)據(jù)文件:

1 平面文件數(shù)據(jù)的描述

   假設(shè)如下的兩個平面文件

   1.dat

    7369,SMITH,CLERK,7902,17-DEC-80,100,0,20

    7499,ALLEN,SALESMAN,7698,20-FEB-81,250,0,30

    7521,WARD,SALESMAN,7698,22-FEB-81,450,0,30

    7566,JONES,MANAGER,7839,02-APR-81,1150,0,20

   2.dat

    7654,MARTIN,SALESMAN,7698,28-SEP-81,1250,0,30

    7698,BLAKE,MANAGER,7839,01-MAY-81,1550,0,30

    7934,MILLER,CLERK,7782,23-JAN-82,3500,0,10

2 創(chuàng)建一個邏輯目錄并進行適當授權(quán)(要有對操作系統(tǒng)中該目錄的讀寫權(quán)限):

      SQL> CREATE DIRECTORY TESTDIR AS 'D:\TEMP\';

      目錄已創(chuàng)建。

      SQL> GRANT READ ON DIRECTORY TESTDIR TO DEMO;

      授權(quán)成功。

      SQL> GRANT WRITE ON DIRECTORY TESTDIR TO DEMO;

      授權(quán)成功。

注意:創(chuàng)建完畢邏輯目錄之后要把平面文件拷貝到該目錄下,另外還要注意文件名字不要寫錯。

3 創(chuàng)建外部表

SQL> EDIT

已寫入文件 afiedt.buf

    CREATE TABLE DEMO.EXT

(

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 TESTDIR

ACCESS PARAMETERS

(

RECORDS DELIMITED BY NEWLINE

FIELDS TERMINATED BY ','

)

LOCATION('1.DAT','2.DAT')

)

SQL>/

表已創(chuàng)建。

4.進行 select 選擇操作看看是否正確:

SQL> select * from DEMO.EXT

EMP_ID ENAME JOB MGR_ID HIREDATE SALARY COMM DEPT_ID

------ ------- ---------- ------- --------- -------- ---------- -------

7369 SMITH CLERK 7902 17-DEC-80 100 0 20

7499 ALLEN SALESMAN 7698 20-FEB-81 250 0 30

7521 WARD SALESMAN 7698 22-FEB-81 450 0 30

7566 JONES MANAGER 7839 02-APR-81 1150 0 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 0 30

7698 BLAKE MANAGER 7839 01-MAY-81 1550 0 30

7934 MILLER CLERK 7782 23-JAN-82 3500 0 10

5.如果要得到外部表的有關(guān)信息:

SQL> DESC DBA_EXTERNAL_TABLES;

名稱

-----------------------------------------------------------------

OWNER

TABLE_NAME

TYPE_OWNER

TYPE_NAME

DEFAULT_DIRECTORY_OWNER

DEFAULT_DIRECTORY_NAME

REJECT_LIMIT

ACCESS_TYPE

ACCESS_PARAMETERS

SQL>SELECT OWNER,TABLE_NAME,DEFAULT_DIRECTORY_NAME,ACCESS_PARAMETERS FROM DBA_EXTERNAL_TABLES;

OWNER TABLE_NAME DEFAULT_DIRECTORY_NAME ACCESS_PARAMETERS

------------------ ------------------------------ ------------------------------

DEMO EXT TESTDIR RECORDS DELIMITED BY NEWLINE

FIELDS TERMINATED BY ','

6.如果 DBA 想要知道平面文件的位置,使用如下的查詢:

SQL>desc DBA_EXTERNAL_LOCATIONS;

名稱

-----------------------------------------

OWNER

TABLE_NAME

LOCATION

DIRECTORY_OWNER

DIRECTORY_NAME

SQL> select * from DBA_EXTERNAL_LOCATIONS;

OWNER TABLE_NAME LOCATION DIR DIRECTORY_NAME

------------------------------------------------------------------------

DEMO EXT 1.DAT SYS TESTDIR

DEMO EXT 2.DAT SYS TESTDIR

#原文結(jié)束

附:實踐筆記
#Begin of 實踐筆記:

小結(jié):
1.oracle用戶(運行Oracle數(shù)據(jù)庫的操作系統(tǒng)用戶),應對測試目錄及平面文件有讀寫權(quán)限。
2.平面文件不能有空行,否則查詢外部表時會報錯。
3.mark(我的ORACLE用戶名),因為是自己創(chuàng)建的 DIRECTORY,故不需要額外授權(quán)給自己。

1.建立測試目錄:$ mkdir /home/oracle/mydir
2.準備平面文件。(注意:不能有空行)
$ cat > 1.dat
7369,SMITH,CLERK,7902,17-DEC-80,100,0,20
7499,ALLEN,SALESMAN,7698,20-FEB-81,250,0,30
7521,WARD,SALESMAN,7698,22-FEB-81,450,0,30
7566,JONES,MANAGER,7839,02-APR-81,1150,0,20
^d

$ cat > 2.dat
7654,MARTIN,SALESMAN,7698,28-SEP-81,1250,0,30
7698,BLAKE,MANAGER,7839,01-MAY-81,1550,0,30
7934,MILLER,CLERK,7782,23-JAN-82,3500,0,10
^d

3.創(chuàng)建一個邏輯目錄并進行適當授權(quán)(要有對操作系統(tǒng)中該目錄的讀寫權(quán)限)
SQL> create directory testdir as '/home/oracle/mydir';

Directory created

SQL> grant read on directory testdir to mark; -- 實際上這行可省略

4.創(chuàng)建外部表
CREATE TABLE mark.ext
(
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 TESTDIR
ACCESS PARAMETERS
(
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
)
LOCATION('1.dat','2.dat')
)

5.進行 select 選擇操作看看是否正確:select * from ext;

#End of 實踐筆記

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    黄色美女日本的美女日人| 免费啪视频免费欧美亚洲| 东京干男人都知道的天堂| 国产免费操美女逼视频| 爱草草在线观看免费视频| 国产一区欧美一区日本道| 国产午夜精品美女露脸视频| 蜜桃av人妻精品一区二区三区| 久久精品国产亚洲av久按摩| 日韩欧美在线看一卡一卡| 久久少妇诱惑免费视频| 无套内射美女视频免费在线观看| 日韩在线视频精品视频| 欧洲一区二区三区自拍天堂| 亚洲一区二区三区有码| 日本理论片午夜在线观看| 精品人妻精品一区二区三区| 亚洲视频一级二级三级| 免费特黄欧美亚洲黄片| 神马午夜福利一区二区| 精品丝袜一区二区三区性色| 99热九九在线中文字幕| 韩国激情野战视频在线播放| 四季av一区二区播放| 日韩精品中文字幕在线视频| 亚洲中文字幕一区三区| 尹人大香蕉一级片免费看| 欧美乱码精品一区二区三| 不卡视频在线一区二区三区| 欧美国产日韩在线综合| 久久本道综合色狠狠五月| 日韩欧美一区二区黄色| 国产一级内射麻豆91| 国产精品香蕉免费手机视频| 一本色道久久综合狠狠躁| 亚洲天堂精品1024| 午夜精品国产精品久久久| 欧美亚洲国产日韩一区二区| 午夜免费精品视频在线看| 亚洲欧美黑人一区二区| 亚洲中文字幕剧情在线播放|