วิธีเรียกข้อมูล ข้าม Database บน Postgresql

บน Postgresql สามารถเรียกข้อมูลข้าม Database ได้ แต่ต้องสั่งติดตั้ง dblink extension ก่อน ด้วยคำสั่ง

 create extension dblink; 

จากนั้น ใช้คำสั่ง dblink() ใน FROM clause ซึ่ง Function นี้ จะต้อง return records มา ซึ่งเราจะต้องกำหนดชนิดของข้อมูลด้วย

ดังตัวอย่างนี้

SELECT 
   t.id, t.fullname, t.dob
FROM 
   dblink(
   'dbname=otherdatabase options=-csearch_path=schema_name',
   '
     SELECT
       id,
       fullname,
       dob, 
     FROM sometable
   ' ) as t(
        id int,
        fullname text,
        dob date,  
   )

เป็นการเรียกไปยัง Database ชื่อ otherdatabase, Schema ชื่อ schema_name และเรียกข้อมูลจาก Table ชื่อ sometable โดยมี field ชื่อ id, fullname, dob

หลังคำสั่ง dblink ต้องกำหนด้วยว่า records ที่ได้กลับมา มี Datatype เป็นอะไรบ้าง

ในตัวอย่างข้างต้น กำหนด id เป็น Integer, fullname เป็น Text และ dob (วันเกิด — Date of birth) เป็น Date

แต่ถ้าอีก Database นั้น ให้สิทธิ์ user ที่ติดต่อเข้าไป ไม่ใช่ super user จะต้องระบุ username, password ดังตัวอย่างนี้

dblink(
'dbname=otherdatabase user=db_username password=db_password options=-csearch_path=schema_name', ...)

เป็นการติดต่อ Database: otherdatabase, User: db_username, Password: db_password, Schema: schema_name

หวังว่าจะเป็นประโยชน์ครับ