教會你掌握oracle外表

外表(external table)就像普通的表對像一樣,可以select等,只是它是只讀的,數據庫中只保存了表結構的描述,表數據卻沒有存放在數據庫內,而是存放在了文件系統上。當用戶想偶然使用數據庫外的結構化數據時,用起外表來就非常方便,甚至比sqlldr都要方便的多。

在這篇文章裏,我們爲大家演示了三步就把握Oracle外表過程。通過這次學習,也許大家就會發展原來學習oracle也是好輕易哦。

第一步:創建目錄並授權

目錄是數據文件的存放目標,數據文件通常要求是文本文件。這個過程在9i以前是需要配置utl_file_dir參數的。

sys@TEST!ls /home/oracle/temp

user.ctluserlist.txtuser.log

rudolf@TESTsys@TESTconn system/alibaba

Connected.sys@TEST

sys@TESTCREATE DirectorY

TEMP AS '/home/oracle/temp/';

Directory created.

sys@TESTgrant read,write on directory TEMP to rudolf;

Grant sUCceeded.

第二步:創建外表與測試

rudolf@TESTCREATE TABLE "USERLIST"

2(

3ID NUMBER,

4USERNAME VARCHAR2(30),

5EMAIL VARCHAR2(128)

6)

7ORGANIZATION external

8(

9TYPE oracle_loader

10DEFAULT DIRECTORY TEMP

11Access PARAMETERS

12(

13RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII

14BADFILE 'TEMP':'userlist.bad'

15DISCARDFILE 'TEMP':'userlist.dis'

16LOGFILE 'TEMP':'user.log'

17READSIZE 1048576

18FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' LDRTRIM

19MISSING FIELD VALUES ARE NULL

20REJECT ROWS WITH ALL NULL FIELDS

21(

22ID CHAR(30)

23TERMINATED BY "," OPTIONALLY ENCLOSED BY '"',

24USERNAME CHAR(30)

25TERMINATED BY "," OPTIONALLY ENCLOSED BY '"',

26EMAIL CHAR(128)

27TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'

28)

29)

30location

31(

32'userlist.txt'

33)

34)REJECT LIMIT UNLIMITED

35rudolf@TEST/

Table created.

rudolf@TESTl

1select id,username from userlist where rownum < 10

2*rudolf@TEST/

ID USERNAME

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

1 RudolfLu

3 tomgu

6 coug

7 chao_ping

8 parrotao

9 cnoug

10 FilsDeDragon

11 Dragon

9 rows selected.

第三步:理解外表數據結構與create table ... organization external語法

大家都用過sqlldr吧?外表的數據文件的結構呢就同sqlldr能讀的數據文件結構一樣了。

那麽語法呢?嘿嘿,別急,讓我們先來做個sqlldr的練習吧:

[oracle@rac1 temp]$ head -10 userlist.txt

1,"RudolfLu"

3,"tomgu"

6,"coug"

7,"chao_ping"

8,"parrotao"

9,"cnoug"

10,"FilsDeDragon"

11,"Dragon"

15,"Xavier"

[oracle@rac1 temp]$ cat user.ctl

LOADINFILE '/home/oracle/temp/userlist.txt'

badfile '/home/oracle/temp/userlist.bad'

discardfile '/home/oracle/temp/userlist.dis'

APPENDINTO TABLE userlistfields terminated by ','

optionally enclosed by '"'

trailing nullcols

( idchar(30),

username char(30))

rudolf@TESTcreate table userlist

2(idnumber,

3 username varchar2(30)

4);

Table created.

rudolf@TEST!

[oracle@rac1 temp]$ sqlldr rudolf/nix@test2.world control=./user.ctl external_table=GENERATE_ONLY

注重,我們加了一個external_table的參數。它的作用是告訴sqlldr不用真實load數據,而是生成包含external table 創建腳本的log文件。

[oracle@rac1 temp]$ ls

user.ctl

userlist.txt

user.log[oracle@rac1 temp]$ cat user.log

SQL*Loader: Release 9.2.0.4.0 - Production on Wed Dec 10 20:50:19 2003

Copyright (c) 1982, 2002, Oracle Corporation.

All rights reserved.

Control File:

./user.ctl

Data File:

/home/oracle/temp/userlist.txt

Bad File:

/home/oracle/temp/userlist.bad

Discard File: /home/oracle/temp/userlist.dis

...CREATE DIRECTORY statements needed for files

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

CREATE DIRECTORY SYS_SQLLDR_XT_TMPDIR_00000 AS '/home/oracle/temp/'

CREATE TABLE statement for external table:

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

CREATE TABLE "SYS_SQLLDR_X_EXT_USERLIST"

(

ID NUMBER,USERNAME VARCHAR2(30))

ORGANIZATION external

(

TYPE oracle_loader

DEFAULT DIRECTORY SYS_SQLLDR_XT_TMPDIR_00000

ACCESS PARAMETERS

(

RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII

BADFILE 'SYS_SQLLDR_XT_TMPDIR_00000':'userlist.bad'

DISCARDFILE 'SYS_SQLLDR_XT_TMPDIR_00000':'userlist.dis'

LOGFILE 'user.log_xt'

READSIZE 1048576

FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' LDRTRIM

MISSING FIELD VALUES ARE NULL

REJECT ROWS WITH ALL NULL FIELDS

(

ID CHAR(30)

TERMINATED BY "," OPTIONALLY ENCLOSED BY '"',

USERNAME CHAR(30)

TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'

)

)

location

(

'userlist.txt'

)

)REJECT LIMIT UNLIMITED...

教會你掌握oracle外表
  外表(external table)就像普通的表對像一樣,可以select等,只是它是只讀的,數據庫中只保存了表結構的描述,表數據卻沒有存放在數據庫內,而是存放在了文件系統上。當用戶想偶爾使用數據庫外的結構化數據時,用...查看完整版>>教會你掌握oracle外表
 
輕松掌握關閉Oracle死鎖進程的具體步驟
有效關閉Oracle死鎖進程的具體步驟: 1.查哪個過程被鎖 查V$DB_OBJECT_CACHE視圖: SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='過程的所屬用戶' AND CLOCKS!='0'; 2. 查是哪一個SID,通過SID可知道是哪個SESSION ...查看完整版>>輕松掌握關閉Oracle死鎖進程的具體步驟
 
教你輕松掌握Oracle RAC靜默安裝過程
1.完成RAC安裝前的准備工作 1.1 同正常安裝Oracle RAC的安裝前配置。主要包括以下幾個部分: (1)軟硬件環境檢查 (2)網絡配置 (3)相關用戶和目錄的創建 (4)用戶環境及系統環境設置 (5)配置遠程訪問 (6)配...查看完整版>>教你輕松掌握Oracle RAC靜默安裝過程
 
了解Oracle體系結構前必須掌握的兩個概念
對于初學者來講,在了解Oracle體系結構之前必須掌握以下兩個基本的概念: 數據庫和實例。 一、數據庫 數據庫(database)是一個數據集合. 無論數據庫是采用關系結構還是面向對象結構, oracle數據庫都將 其數據存放在數據...查看完整版>>了解Oracle體系結構前必須掌握的兩個概念
 
輕松掌握Oracle數據庫Where條件執行順序
由于SQL優化起來比較複雜,並且還會受環境限制,在開發過程中,寫SQL必須必須要遵循以下幾點的原則: 1.ORACLE采用自下而上的順序解析WHERE子句,根據這個原理,表之間的連接必須寫在其他WHERE條件之前, 那些可以過濾掉最...查看完整版>>輕松掌握Oracle數據庫Where條件執行順序
 
快速掌握重啓Oracle數據庫的操作步驟
在實際的應用中,有時候工作數據庫需要重新啓動。本文介紹了一個特別實用的操作步驟,希望對大家有所幫助。 1. 停應用層的各種程序 2. 停Oralce的監聽進程 $ lsnrctl stop 3. 在獨占的系統用戶下,備份控制文件: $ s...查看完整版>>快速掌握重啓Oracle數據庫的操作步驟
 
教你快速掌握Oracle數據庫結構的16個要點
本文主要介紹了學習Oracle數據庫結構所應掌握的16個要點,詳細內容請大家參考下文: 1、一個數據文件只能歸到某一個表空間上,每個表空間可以含一個或多個數據文件。包括系統數據和用戶數據。 2、表空間是包括一個或...查看完整版>>教你快速掌握Oracle數據庫結構的16個要點
 
教你快速掌握一個簡單的Oracle定時任務
一、在PLSQL中創建表: create table HWQY.TEST( CARNO VARCHAR2(30), CARINFOID NUMBER)二、在PLSQL中創建存儲過程: create or replace procedure pro_testAScarinfo_id number;BEGINselect s_CarInfoID.nex...查看完整版>>教你快速掌握一個簡單的Oracle定時任務
 
輕松掌握jdbc操縱Oracle數據庫lob字段
在Oracle數據庫中,lob(large object,大型對象)類型的字段使用的頻率越來越高了。因爲這種類型的字段,容量大(最多能容納4gb的數據),且一個表中可以有多個這種類型的字段,很靈活,適用于數據量非常大的業務領...查看完整版>>輕松掌握jdbc操縱Oracle數據庫lob字段
 
 
回到王朝網路移動版首頁