Exzilla.net
Contact
Home -> Articles -> Howto: using external table for Oracle9i Database
 
Features
Forums
Files
Blogs
Howto: Using external table for Oracle9i Database
July 28, 2001
Spider Webb
Author's Bio | E-Mail
Copyright (C) 2001 exzilla.net

Purpose
External Tables นั้นก็จะมีลักษณะเหมือนๆ กันกับ SQL Tables ที่เราใช้งานกันทั่วไปแตกต่างกันเพียงแต่ว่าข้อมูลที่เราจะใช้งานนั้นจะเป็นในลักษณะอ่านเพียงอย่างเดียว (Read Only) และตัวข้อมูลจริงๆ ก็อยู่นอก Database ซึ่งก็คืออยู่ที่ระดับ file System แทน

ในการใช้งาน External Table เราสามารถดึงข้อมูลได้โดยตรง รวมถึงการทำงานในลักษณะ Parallel ได้โดยใช้ คำสั่ง SQL ส่วนในการทำ DML และการสร้าง Index นั้นยังไม่สามารถทำได้

Metadata สำหรับ external Table นั้นจะถูกสร้างได้ คำสั่ง CREATE TABLE ... ORGANIZATION EXTERNAL

Prerequistires
Oracle9i Database (9.0.1)

Step-by-Step Example:

Prepare Data Source
เริ่มต้นด้วยการตรวจสอบ Directory ที่เราเก็บข้อมูลไว้ต้องเป็น Directory ที่ Oracle Process มีสิทธิในการอ่าน, เขียน

$ pwd

/d1/o9i/mydemo/data

$ ls -al

total 6

drwxr-xr-x 2 o9i dba 512 Jun 23 08:47 .

drwxr-xr-x 3 o9i dba 512 Jun 23 08:47 ..

-rw-r--r-- 1 o9i dba 186 Jun 23 08:48 Employees.csv

$

$ cat Employees.csv

20015,Teddy,Graham,teddy@exzilla.net

20011,Spider,webb,spidix@exzilla.net

20012,Kouprey,Rex,kouprex@exzilla.net

20016,Fuju,Graham,fuju@exzilla.net

20018,Bruce,Archer,barcher@exzilla.net

$

CREATE ANY DIRECTORY system Privilege
ทำการ Grant สิทธิ CREATE ANY DIRECTORY system Privilege ให้กับ User ที่ต้องการที่ต้องการใช้งาน

SQL> connect system/manager

Connected.

SQL> grant CREATE ANY DIRECTORY to scott;

Grant succeeded.

SQL>

Create Directory Ojbect for a directory on the server's file system where external table data are located
ในขั้นตอนนี้ เราก็ทำการ CREATE directory object ที่มีการอ้างถึงตำแหน่งข้อมูลที่เราจัดเก็บอยู่

SQL> connect scott/tiger

Connected.

SQL> create or replace directory demo_dir as '/d1/o9i/mydemo/data';

Directory created.

SQL> select owner,object_name,object_type from all_objects

2 where object_name = 'DEMO_DIR';

OWNER OBJECT_NAME OBJECT_TYPE

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

SYS DEMO_DIR DIRECTORY

SQL>

Directory Object ที่ถูกสร้างขั้นมานั้นจะใช้ namespace ที่เดียวกัน ( A single namespace) ซึ่งก็หมายความว่า Directory Object ไม่ได้มีเจ้าของที่ที่แยกกันแต่ละ Schema จะเห็นได้ว่าจากเมื่อเราลอง select ข้อมูลจาก Data Dictionary ดูก็จะเห็นได้ว่า Directory Object ที่ Scott เป็นคนสร้างนั้นเป็น SYS

grant read, write on directory <demo_dir> to <user>;
โดยปกติ user ที่ทำการสร้าง Directory Object จะมีสิทธิในการ read,write กับ Directory Object นั้นโดอัตโนมัติ แต่ถ้าต้องการให้ user อื่นมีสิทธิเช่นกันก็ต้อง Grant สิทธิในการในงาน Directory Object นั้น ๆ ให้กับ User ที่ต้องการ

SQL> grant read,write on directory external_dir to teddy;

Grant succeeded.

CREATE EXTERNAL TABLE

SQL> connect scott/tiger

Connected.

SQL> drop table employees_ext;

Table dropped.

SQL> @c2.sql

Table created.

SQL> l

1 CREATE table employees_ext (

2 employee_id NUMBER(5),

3 first_name varchar2(30),

4 last_name varchar2(30),

5 email varchar2(30)

6 )

7 ORGANIZATION EXTERNAL -- External Table

8 (

9 TYPE oracle_loader -- Access Driver

10 DEFAULT DIRECTORY demo_dir -- Files Directory

11 ACCESS PARAMETERS -- Similar to SQL*Loader

12 (

13 RECORDS DELIMITED BY NEWLINE

14 BADFILE 'bad_sample'

15 LOGFILE 'log_sample'

16 FIELDS TERMINATED BY ','

17 MISSING FIELD VALUES ARE NULL

18 )

19 LOCATION ('Employees.csv')

20 )

21 PARALLEL 1 -- Independent from the number of files

22* REJECT LIMIT UNLIMITED

SQL>

Query data from external table

SQL> select * from employees_ext;

EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL

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

20015 Teddy Graham teddy@exzilla.net

20011 Spider webb spidix@exzilla.net

20012 Kouprey Rex kouprex@exzilla.net

20016 Fuju Graham fuju@exzilla.net

20018 Bruce Archer barcher@exzilla.net

SQL >

Note:
Data Dictionary for External Tables

  • DBA_EXTERNAL_TABLES
  • DBA_EXTERNAL_LOCATIONS

Complete Sample code:

References:
1.Oracle9i SQL Reference Release 1 (9.0.1) Part Number A90125-01

More Information:
http://otn.oracle.com/

Keywords:
Externale table, 9.0.1, 9i

 

 

{exzilla.net -- e-development QuickStart --}



Copyright (c) 2001-2005 - Exzilla.net -  All Rights Reserved.
Contact Us | Privacy Policy | Terms & Conditions