การสร้าง External Table ในฐานข้อมูล Oracle

    ตัว External Table นั้นเป็นคุณสมบัติอย่างหนึ่งในฐานขอมูลของ oracle ผู้ใช้สามารถเรียกดูข้อมูลจากไฟล์ txt, xls, xlsx, cvs และไฟล์ชนิดอื่นๆ เสมือนหนึ่งเป็นข้อมูลที่อยู่ในฐานข้อมูลจริงๆ ซึ่งในความเป็นจริงแล้วข้อมูลจริงๆอยู่ในไฟล์.
    แม้ดูเหมือนว่ามันสุดยอดมากๆแต่จริงๆแล้วก็มีข้อจำกัดเหมือนกันครับ เพราะ External Table เป็นตารางเสมือนไม่ใช่ตารางจริงเพราะฉะนั้นจึงไม่มีการสร้าง sequence หรือ index ใดๆในฐานข้อมูล เป็นเหตุให้ไม่สามารถ ใช้ SQL Statement พวก INSERT, UPDATE, DELETE ได้     เพียงแค่ SELECT ได้อย่างเดียวจริงๆครับ งั้นเราลองมาดูตัวอย่างการใช้งานกันเลยครับ.

หมายเหตุ 1: ตั้งแต่ขั้นตอนที่ 1 - 5 หากผุ้อ่านเคยทำไว้แล้ว ไม่ว่าทำผ่าน tools หรือ command ให้ข้ามไปขั้นตอนที่ 6 ได้เลยครับ
หมายเหตุ 2 : หากจะใช้คำสั่ง (ต้องใช้สิทธิ SYS นะครับ)
CREATE DIRECTORY EXTERNALS AS'C:\EXTERNALS ';       -- ชื่อโฟรเดอร์ของเราเอง
GRANT READ, WRITE ON DIRECTORY EXTERNALS  TO JMEDX; -- JMEDX user ของผู้ใช้
เสร็จแล้วให้ข้ามไปขั้นตอนที่ 6 ได้เลยครับ

ขั้นตอนที่ 1 : สร้างโฟรเดอร์เก็บ text file ชื่อ "EXTERNALS"

และสร้าง text file ไฟล์ชื่อ "input" ไว้ในโฟรเดอร์ดังกล่าวพร้อมตัวอย่างข้อมูลให้เรียบร้อยก่อน


ขั้นตอนที่ 2 : เปิดโปรแกรม SQL Developer ขึ้นมาทำการ connect ด้วย user "SYS" และคลิกขวาที่ "Directories" จากนั้นเลือก Create Directory... เพื่อสร้างชื่อ Directory ให้ระบบรู้จัก

ขั้นตอนที่ 3 : ป้อนชื่อ Directory Name และ Database Server Directory ซึ่งก็คือ path ของโฟรเดอร์ที่เราสร้างไว้ก่อนหน้านั้น จากนั้นก็กด Apply และ OK



ขั้นตอนที่ 4 : ต่อมาเป็นขั้นตอนการกำหนดสิทธิ์การเข้าถึง Directory ใหม่ที่สร้างขึ้นว่า ใครมีสิทธิ์เข้าใช้ได้บ้าง ให้ทำการคลิกขวาที่ Directory ที่เราสร้างจากนั้นเลือก "Grant" เมื่อเลือกแล้วจะมีหน้าต่างใหม่ขึ้นมา

ขั้นตอนที่ 5 : ในหน้าต่างใหม่ ให้เลือก Users/Roles ของเราเอง (1) จากนั้นกำหนดสิทธิ์ให้เลือก Grant All (2) แล้วกดปุ่ม Apply

 ขั้นตอนที่ 6 : ใน SQL developer ให้คลิกขวาที่ Connection ที่เราต้องการแล้วเลือก Open SQL Worksheet ขึ้นมา หากมีอยู่แล้วข้ามขั้นตอนนี้ไปได้เลยครับ



ขั้นตอนที่ 7 : เมื่อสร้าง Directory และกำหนดสิทธิ์ต่างๆเสร็จแล้วขั้นตอนต่อมาคือการเขียน  External Table ครับ
CREATE TABLE SS_TB_EXTERNAL_TABLE
  (
    -- field ต่างๆของตาราง
    EMPNO    NUMBER(10,0),
    ENAME    VARCHAR2(15 BYTE),
    JOB      VARCHAR2(15 BYTE),
    MGR      NUMBER(4,0),
    HIREDATE DATE,
    SAL      NUMBER(7,2)
  )
  --คำสั่งเชื่อม External Table
  ORGANIZATION EXTERNAL
  (
    TYPE ORACLE_LOADER DEFAULT DIRECTORY "EXTERNALS" -- ชื่อโฟรเดอร์ที่สร้างไว้
    ACCESS PARAMETERS (
        RECORDS DELIMITED BY NEWLINE   --  นับรายการตามแถวใหม่
        FIELDS TERMINATED BY ','       --  แต่ละ column(Field) ด้วย ','
        MISSING FIELD VALUES ARE NULL  --  column(Field) ไหนไม่มีค่าให้ เชคเป็น null
    ) 
    LOCATION ( 'input.txt' )           -- ชื่อไฟล์
  ) ;
จากนั้น ทำการ run script (1) เราก็จะเห็นว่า ตารางถูกสร้างขึ้นใหม่ทางด้านซ้าย (2)


ขั้นตอนที่ 8 : ให้ดูในตารางที่เราสร้างว่าข้อมูลเข้าหรือยัง เป็นอันเสร็จสิ้นการใช้งาน External Table ในฐานข้อมูล Oracle


About Nop

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Post a Comment