Oracle: แปลงข้อมูล JSON เป็น Table หรือ View

ในการส่งข้อมูลระหว่างแอพพลิเคชัน ในปัจจุบันปฏิเสธไม่ได้ว่ารูปแบบ JSON ได้รับความนิยมสูงมาก วันนี้มีโจทย์ในการพัฒนาระบบอย่างนึงที่ผมเจอคือ ได้ข้อมูลจาก log มาจัดเก็บในฐานข้อมูลซึ่งอยู่ในรูปแบบ JSON แต่ต้องการแยกเก็บเป็นฟิลด์เพื่อนำไปประมวลผล และวิเคราะห์ต่อ วิธีการแปลงข้อมูลที่ผมเลือกใช้ คือใช้ฟังก์ชัน JSON_TABLE โดยตัวอย่างข้อมูล JSON มีรูปแบบดังนี้ จะเห็นได้ว่ามีจำนวน Key และ Value จำนวนมากและอยู่ในรูปแบบ Parent Chid ด้วยแต่สามารถสร้าง View หรือ Table จากข้อมูลดังกล่าวด้วยคำสั่งเดียวดังนี้ สังเกตุว่า จุดสำคัญคือคำสั่ง json_table ที่เราจะต้องระบุฟิลด์ที่เก็บข้อมูล JSON ของเราดังในตัวอย่างคือ l.detail ที่เดิมเก็บอยู่ในตาราง log_traffic โดยใช้ path ย่อเป็น ‘$’ จากนั้นระบุ Keyword columns และตั้งชื่อ columns สำหรับ view ที่เราจะสร้างเช่น service_name ซึ่งใช้เก็บข้อมูลที่อยู่ใน path ดังนี้ ‘$.service.name’ … Read more

สร้าง ER Diagram ง่ายๆ ด้วย Toad for Oracle

สวัสดีผู้อ่านทุกท่าน Blog ที่ 2 ของ TOR รอบนี้จะขอว่าด้วยเรื่องของ ER Diagram กันค่ะ การจัดทำ ER Diagram โดยปกติเราสามารถทำได้หลากหลายวิธี ใช้งานได้มากมายหลากหลายเครื่องมือ ก็แล้วแต่แหละเนอะ ว่าใครถนัดแบบไหน ใช้เครื่องมือใด สำหรับทางผู้เขียนจะคลุกคลีตีโมงอยู่กับ Toad for Oracle เป็นหลัก ครั้งนี้เลยจะมาขอแชร์วิธีการเล็กๆ น้อยๆ ซึ่งมีความสะดวกสบายในการสร้าง ER Diagram จากข้อมูลตารางที่อยู่ในฐานข้อมูลของเราโดยอัตโนมัตินั่นเอ๊งงงง !!! ปะ …. เรามาเริ่มกันเลยละกัน เมื่อเราเปิด Toad for Oracle และ Connect เข้า Database ที่เราต้องการเรียบร้อยแล้ว เราก็จะได้หน้าจอตามรูป ปล…หน้าตาอาจจะต่างกันเล็กน้อยแล้วแต่ version ของแต่ละคนที่ใช้งาน 2. ให้คลิกเลือกเมนู “Database” —> จากนั้นเลือกเมนู “Report” —> เลือกเมนู “ER … Read more

เชื่อมต่อจากฐานข้อมูล Oracle ไปยังฐานข้อมูลอื่นด้วย Oracle Database Gateway

โดยปกติหากต้องการเชื่อมต่อฐานข้อมูลสองฐานข้อมูลสำหรับ Oracle สามารถทำได้โดยการสร้าง database link แต่กรณีที่ต้องการสร้างการเชื่อมต่อจากฐานข้อมูล Oracle ไปยังฐานข้อมูลที่สร้างโดยระบบจัดการฐานข้อมูลอื่นที่ไม่ใช่ Oracle เช่น MS SQL Server, MySQL สามารถทำได้โดยใช้เครื่องมือที่เรียกว่า Oracle Database Gateway นั่นเอง ตัวอย่างการใช้ Oracle Database Gateway เชื่อมต่อไปยัง MS SQL Server เพื่อให้เห็นภาพการใช้งานจะยกตัวอย่างการใช้งานกับ MS SQL Sever ดังนี้ หมายเหตุ รุ่นของ Software ที่ใช้ในตัวอย่างนี้คือ Oracle Database 12c R2 (12.2.0) Oracle Database Gateways 12c (12.2.0) เตรียมข้อมูลที่จำเป็นก่อนการติดตั้ง ข้อมูลของ SQL Server ที่เราต้องการเชื่อมต่อ ชื่อเครื่องหรือ IP Address ของเครื่องที่ … Read more

การใช้ grant และ grant with grant option ใน Oracle

การใช้คำสั่ง grant โดยทั่วไปเมื่อต้องการให้สิทธิ์สำหรับดำเนินการกับ object ใด ๆ ของ user หนึ่งให้กับอีก user หนึ่ง จะใช้คำสั่งคือ grant ตัวอย่าง เช่น user1 เป็นเจ้าของตารางชื่อ table01 ในฐานข้อมูลมี user ชื่อ user2 อยู่ในฐานข้อมูลเดียวกับ user1 ต้องการให้ user2 สามารถใช้คำสั่ง select ข้อมูลจากตาราง table01 ของ user1 บน user1 ดำเนินการโดยใช้คำสั่งในการให้สิทธิ์คือ grant select on user1.table01 to user2; หลังจากให้สิทธิ์แล้ว บน user2 สามารถใช้คำสั่งในการ select ข้อมูลจากตาราง table01 ของ user1 ได้ ตังตัวอย่างดังนี้ select * from … Read more

กำหนด Lexer สำหรับ Full Text Search บน ฐานข้อมูล Oracle เพื่อค้นหาภาษาไทยให้ถูกต้อง

เนื่องจากระบบสืบค้นที่ดูแลอยู่เจอปัญหาค้นหาเลขไทย “๑ ๒ ๓ …” ไม่เจอ หลังจากตรวจสอบจนแน่ใจแล้วว่าก่อนจะส่งคำสั่ง Query ไปยังฐานข้อมูลไม่ได้เผลอตัดเลขไทยออกที่ขั้นตอนไหน จึงทำการตรวจสอบคำสั่งที่ใช้ในการค้นหา พบว่าใช้ฟังก์ชัน SELECT * FROM THAI_LIBRARY WHERE CONTAINS(BOOK_NAME, ‘๑๐๐ ปีชาติไทย’, 1) > 0; จากคำสั่ง (ที่สมมุติขึ้น) ด้านบนจะเห็นได้ว่าใช้ CONTAINS ซึ่งเป็นฟังก์ชันที่อยู่ในกลุ่ม Oracle Text ซึ่งฟังก์ชันนี้จะค้นหาคำใกล้เคียงจาก Index แล้วคืนค่า Score มาให้เราเพื่อใช้เป็นเงื่อนไขพิจารณาว่าจะใช้ข้อมูลรายการนั้นหรือไม่ ที่มาภาพ ภาพด้านบนแสดงขั้นตอนการสร้าง Oracle Text Index เนื่องจากระบบจัดเก็บข้อมูลเป็น Text อยู่แล้วจึงไม่มีการกำหนด Fillter, Sectioner ทำให้จุดที่ต้องตรวจสอบว่า เลขไทยเราหายไปจาก Index ได้ยังไงเหลืออยู่คือ Lexer ที่จะเป็นตัวกำหนด Wordlist, Stoplist ในการทำ Index ต่อไป … Read more