แม้ดูเหมือนว่ามันสุดยอดมากๆแต่จริงๆแล้วก็มีข้อจำกัดเหมือนกันครับ เพราะ 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










0 comments:
Post a Comment