Thep Excel

MySQL.Database – เชื่อมต่อและโหลดข้อมูลจากฐานข้อมูล MySQL

MySQL.Database เป็นฟังก์ชันตัวเชื่อมต่อ (connector) ที่ใช้ส่งข้อมูลจากฐานข้อมูล MySQL ไปยัง Power Query ช่วยให้คุณสามารถโหลดตารางและมุมมองจากเซิร์ฟเวอร์ MySQL ได้

= MySQL.Database(server as text, database as text, optional options as nullable record) as table

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
6/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

= MySQL.Database(server as text, database as text, optional options as nullable record) as table

Argument Type Required Default Description
server Text Yes ที่อยู่ของเซิร์ฟเวอร์ MySQL เช่น ‘localhost’ หรือ ‘myserver.com’ สามารถระบุพอร์ตได้โดยเพิ่ม ‘:3306’ ไว้ท้าย
database Text Yes ชื่อของฐานข้อมูล MySQL ที่ต้องการเชื่อมต่อ
options Record (nullable) Optional null ระเบียนตัวเลือกที่มีการตั้งค่าเพิ่มเติม เช่น Encoding CommandTimeout Query ReturnSingleDatabase ฯลฯ

Examples

เชื่อมต่อพื้นฐานกับฐานข้อมูล MySQL
MySQL.Database("localhost", "myDatabase")
เชื่อมต่อกับเซิร์ฟเวอร์ localhost และดึงรายการตารางจากฐานข้อมูล myDatabase
Power Query Formula:

= MySQL.Database("localhost", "myDatabase")

Result:

ตารางแสดงรายชื่อตารางทั้งหมด มุมมอง และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล myDatabase

เชื่อมต่อกับเซิร์ฟเวอร์ที่ระบุพอร์ตแบบกำหนดเอง
MySQL.Database("myserver.com:3307", "salesDB")
เมื่อฐานข้อมูล MySQL ทำงานบนพอร์ต 3307 (ไม่ใช่ค่าเริ่มต้น 3306) สามารถระบุในอยู่เซิร์ฟเวอร์ได้
Power Query Formula:

= MySQL.Database("myserver.com:3307", "salesDB")

Result:

ตารางแสดงรายชื่อตารางจากฐานข้อมูล salesDB บนเซิร์ฟเวอร์ myserver.com พอร์ต 3307

ใช้ตัวเลือก Query เพื่อดึงข้อมูลด้วย SQL query แบบ native
let Source = MySQL.Database("localhost", "salesDB", [Query = "SELECT * FROM orders WHERE amount > 1000"]) in Source
การใช้ Query option ช่วยให้คุณสามารถเขียน SQL แบบเหมาะสม เพื่อดึงข้อมูลที่เจาะจงมากขึ้น แล้วไม่ต้องกรองข้อมูลภายใน Power Query
Power Query Formula:

let
    Source = MySQL.Database("localhost", "salesDB", [Query = "SELECT * FROM orders WHERE amount > 1000"])
in
    Source

Result:

ตารางแสดงเฉพาะแถวจากตาราง orders ที่มี amount มากกว่า 1000

ใช้ ReturnSingleDatabase เพื่อคืนเฉพาะฐานข้อมูลที่ระบุ
let Source = MySQL.Database("localhost", "targetDB", [ReturnSingleDatabase = true]) in Source
เมื่อตั้ง ReturnSingleDatabase = true Power Query จะคืนเฉพาะตารางจากฐานข้อมูลที่ระบุเท่านั้น ทำให้รายการนำทางไม่ยุ่งเหยิง
Power Query Formula:

let
    Source = MySQL.Database("localhost", "targetDB", [ReturnSingleDatabase = true])
in
    Source

Result:

ตารางแสดงเฉพาะตารางจากฐานข้อมูล targetDB โดยไม่รวมฐานข้อมูลอื่นๆ

ใช้ HierarchicalNavigation เพื่อจัดกลุ่มตารางตาม Schema
let Source = MySQL.Database("localhost", "largeDB", [HierarchicalNavigation = true]) in Source
เมื่อตั้ง HierarchicalNavigation = true ตารางจะถูกจัดกลุ่มตามชื่อ schema ทำให้ง่ายต่อการนำทางเมื่อมีจำนวนตารางมากมาย
Power Query Formula:

let
    Source = MySQL.Database("localhost", "largeDB", [HierarchicalNavigation = true])
in
    Source

Result:

ตารางแสดงรายชื่อตารางที่จัดกลุ่มตามชื่อ schema

ใช้ CommandTimeout เพื่อตั้งเวลา timeout ของการส่งสอบถาม
let Source = MySQL.Database("localhost", "largeDataDB", [CommandTimeout = #duration(0, 0, 5, 0)]) in Source
สำหรับฐานข้อมูลขนาดใหญ่หรือสอบถาม heavy query สามารถเพิ่มเวลา CommandTimeout โดยใช้ #duration(days, hours, minutes, seconds)
Power Query Formula:

let
    Source = MySQL.Database("localhost", "largeDataDB", [CommandTimeout = #duration(0, 0, 5, 0)])
in
    Source

Result:

ตารางแสดงรายชื่อตารางพร้อมกำหนดให้การส่งสอบถามมี timeout 5 นาที

FAQs

MySQL.Database ให้ผลลัพธ์แบบอะไร

MySQL.Database คืนค่าตารางที่มีรายการของตารางทั้งหมด มุมมอง (views) และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล MySQL ที่ระบุ

ต้องตั้งค่าอะไรเพื่อให้ฟังก์ชันนี้ทำงานได้

ต้องมี MySQL Connector หรือ driver ที่เหมาะสมติดตั้งบนเครื่องของคุณ และต้องระบุที่อยู่เซิร์ฟเวอร์ MySQL และชื่อฐานข้อมูลให้ถูกต้อง นอกจากนี้อาจต้องตั้งชื่อผู้ใช้และรหัสผ่านหากเซิร์ฟเวอร์ต้องการการยืนยันตัวตน

สามารถใช้ Query option เพื่อรันคำสั่ง SQL ได้ไหม

ได้ สามารถใช้ Query option ในการระบุคำสั่ง SQL แบบ native ได้ อย่างไรก็ตาม Query option จะคืนเฉพาะชุดผลลัพธ์แรกเท่านั้น

ฟังก์ชัน TreatTinyAsBoolean มีหมายความว่าอะไร

โดยค่าเริ่มต้น ฟังก์ชัน TreatTinyAsBoolean ถูกตั้งเป็น true ซึ่งหมายความว่าคอลัมน์ tinyint จะถูกมองว่าเป็นค่าลอจิกัล (true/false) แต่ถ้าตั้งเป็น false มันจะเป็นค่าตัวเลขแทน

พอร์ต MySQL ค่าเริ่มต้นคืออะไร

พอร์ต MySQL ค่าเริ่มต้นคือ 3306 หากฐานข้อมูล MySQL ของคุณทำงานบนพอร์ตอื่น สามารถระบุในพารามิเตอร์ server เช่น ‘localhost:3307’

Resources & Related

Additional Notes

MySQL.Database เป็นตัวเชื่อมต่อที่อนุญาตให้คุณเชื่อมต่อกับเซิร์ฟเวอร์ MySQL และ โหลดข้อมูลจากฐานข้อมูลตัวเลือก ฟังก์ชันนี้จะคืนค่าตารางที่มีรายการของตารางทั้งหมด มุมมอง (views) และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล

ประเด็นสำคัญคือ MySQL.Database ให้ความยืดหยุ่นสูงในการประมวลผลข้อมูลผ่านตัวเลือกต่างๆ อย่างเช่น การกำหนด Encoding การตั้ง CommandTimeout หรือแม้กระทั่งการเขียน SQL query แบบ native เพื่อดึงข้อมูลที่เจาะจงมากขึ้น

ส่วนตัวผมชอบการใช้ ReturnSingleDatabase = true เพราะมันช่วยให้ฉันดึงข้อมูลจากฐานข้อมูลที่ระบุเท่านั้น ทำให้รายการในนำทางไม่ยุ่งเหยิง และ HierarchicalNavigation = true นั้นเหมาะเวลาที่เรามีจำนวนตารางมากมาย เพราะมันจะจัดกลุ่มตารางตามชื่อ schema ได้ 😎

Leave a Reply

Your email address will not be published. Required fields are marked *