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