← กรณีใช้งาน

Join ตาราง PostgreSQL กับ MySQL โดยไม่ต้องย้ายข้อมูล

ลูกค้าอยู่ใน PostgreSQL ออเดอร์อยู่ใน MySQL แล้วต้องการรายงานที่มีทั้งสองอย่าง หน้านี้อธิบายว่าทำไม SQL ปกติทำไม่ได้ ทางเลือกที่มี และวิธีทำใน Ruamhub

ทำไม JOIN ธรรมดาใช้ไม่ได้

คำสั่ง JOIN ทำงานภายในฐานข้อมูลเดียว PostgreSQL มองไม่เห็นตารางใน MySQL และกลับกัน ต้องมีอะไรสักอย่างอ่านทั้งสองฝั่งมารวมกัน จะเป็นคน (export แล้วรวมใน Excel) ส่วนเสริมของฐานข้อมูล หรือเครื่องมือกลางก็ได้

ทางเลือกที่มี

วิธีต้องเตรียมอะไรทำซ้ำทุกสัปดาห์เหมาะกับ
Export CSV แล้วรวมใน Excelไม่ต้องเตรียมทำมือใหม่ทุกครั้งงานครั้งเดียว ข้อมูลไม่มาก
postgres_fdw / mysql_fdwสิทธิ์ superuser ติดตั้ง extension บนเซิร์ฟเวอร์ได้ ด้วย view หรือ cronทีมที่มี DBA ดูแลฐานข้อมูลเอง
คลังข้อมูล + ETLเซิร์ฟเวอร์ เครื่องมือ ETL และคนดูแลได้ข้อมูลระดับหลายร้อยล้านแถว
Join Canvas ใน Ruamhubการเชื่อมต่อ 2 ตัว (อ่านอย่างเดียวได้)ได้ ตั้งเวลาได้ในแพ็กเกจ Dev ขึ้นไปทีมที่อยากได้ผลวันนี้ โดยไม่แตะเซิร์ฟเวอร์

ทำใน Ruamhub

  1. เชื่อมต่อทั้งสองฐาน

    เพิ่มการเชื่อมต่อ PostgreSQL และ MySQL ติ๊กอ่านอย่างเดียวได้เลย เพราะการ join แค่อ่านข้อมูล

  2. ลากสองตารางมาวาง

    ลาก customers จาก PostgreSQL และ orders จาก MySQL มาวางบน Join Canvas แล้วลากเส้นจาก customers.id ไป orders.customer_id

  3. เลือกชนิด join และดูผล

    เลือก inner หรือ left join ตรวจตัวอย่าง 100 แถวแรก เพิ่ม filter หรือ group by ได้ถ้าต้องการยอดรวม

  4. บันทึกเป็นตาราง

    ตั้งตารางปลายทางในฐานข้อมูลที่เขียนได้ แล้วรันทันทีหรือตั้งเวลาให้รันเองทุกคืน

postgres customers
idname
1Somchai K.
2Narin P.
3Malee S.
mysql orders
idcustomer_idtotal
104211,250
10432480
104412,900
10453760
ผลลัพธ์ที่ join แล้ว
ordercustomertotal
#1042Somchai K.฿1,250
#1043Narin P.฿480
#1044Somchai K.฿2,900
#1045Malee S.฿760

ต้องใช้แพ็กเกจอะไร

  • แพ็กเกจ Free ลองได้ครบ: เชื่อมต่อได้ 2 ตัว สร้าง pipeline ได้ 1 ตัว และรันเองได้ 30 ครั้งต่อเดือน
  • ตั้งเวลาให้รันเองต้องใช้แพ็กเกจ Dev ขึ้นไป
  • ฐานข้อมูลต้องเชื่อมต่อจากอินเทอร์เน็ตได้ หรือเข้าผ่าน SSH tunnel

ฟีเจอร์ที่ใช้คู่กัน

  • Join Canvas

    ลากตารางจากคนละฐานข้อมูลหรือไฟล์ Excel มาวางบนแคนวาส join, กรอง, group by แล้วดูผลลัพธ์ได้ทันที

    ดูรายละเอียด
  • การเชื่อมต่อฐานข้อมูล

    เชื่อมต่อ PostgreSQL, MySQL, SQL Server, Oracle, SQLite และ MongoDB ผ่าน TLS หรือ SSH tunnel ตั้งเป็นอ่านอย่างเดียวได้ และให้ทีมใช้ร่วมกันโดยไม่ต้องรู้รหัสผ่าน

    ดูรายละเอียด
  • Pipeline และตั้งเวลารัน

    บันทึกผลจาก Join Canvas เป็นตารางในฐานข้อมูลที่เลือก หรือส่งเป็น report ทางอีเมล SFTP, S3 และ shared folder รันเองหรือตั้งเวลา และดูประวัติการรันทุกครั้ง

    ดูรายละเอียด

คำถามที่พบบ่อย

ใช้กับฐานข้อมูล production ได้ไหม?

ได้ ตั้งการเชื่อมต่อเป็นอ่านอย่างเดียว ระบบจะกันการเขียนทุกอย่างลงฐานข้อมูลนั้น แล้วเขียนผลลัพธ์ลงฐานข้อมูลอื่นที่ใช้ทำรายงาน

join ข้าม PostgreSQL กับ MySQL ทำงานอย่างไร?

ระบบใช้ DuckDB อ่านตารางจากแต่ละการเชื่อมต่อแล้ว join ให้ ข้อมูลไม่ถูกเก็บไว้ที่ Ruamhub นอกจากตารางผลลัพธ์ที่คุณเลือกเขียนลงฐานข้อมูลของคุณเอง

ถ้ามีข้อมูลบางส่วนอยู่ในไฟล์ Excel ด้วยล่ะ?

อัปโหลดไฟล์ CSV หรือ .xlsx แล้ววางบนแคนวาสเดียวกัน join กับตารางจากทั้งสองฐานข้อมูลได้

เริ่มรวมข้อมูลทุกฐานไว้ในที่เดียว

เริ่มฟรีได้เลย หรือนัดเดโมให้เราพาดูการใช้งานกับข้อมูลของทีมคุณ