---
title: MySQL.Database – เชื่อมต่อและโหลดข้อมูลจากฐานข้อมูล MySQL
url: https://www.thepexcel.com/functions/power-query/accessing-data-functions/mysql-database/
type: function-explainer
program: Power Query
syntax: "= MySQL.Database(server as text, database as text, optional options as nullable record) as table"
date: 2025-12-12
updated: 2025-12-23
scores:
  popularity: 6
  difficulty: 4
  usefulness: 6
---

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

> MySQL.Database เป็นฟังก์ชันตัวเชื่อมต่อ (connector) ที่ใช้ส่งข้อมูลจากฐานข้อมูล MySQL ไปยัง Power Qu

## คำอธิบาย

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

## Syntax

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

## Arguments

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

## ตัวอย่าง

### 1. เชื่อมต่อพื้นฐานกับฐานข้อมูล MySQL

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

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

เชื่อมต่อกับเซิร์ฟเวอร์ localhost และดึงรายการตารางจากฐานข้อมูล myDatabase

### 2. เชื่อมต่อกับเซิร์ฟเวอร์ที่ระบุพอร์ตแบบกำหนดเอง

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

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

เมื่อฐานข้อมูล MySQL ทำงานบนพอร์ต 3307 (ไม่ใช่ค่าเริ่มต้น 3306) สามารถระบุในอยู่เซิร์ฟเวอร์ได้

### 3. ใช้ตัวเลือก Query เพื่อดึงข้อมูลด้วย SQL query แบบ native

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

**ผลลัพธ์:** `ตารางแสดงเฉพาะแถวจากตาราง orders ที่มี amount มากกว่า 1000`

การใช้ Query option ช่วยให้คุณสามารถเขียน SQL แบบเหมาะสม เพื่อดึงข้อมูลที่เจาะจงมากขึ้น แล้วไม่ต้องกรองข้อมูลภายใน Power Query

### 4. ใช้ ReturnSingleDatabase เพื่อคืนเฉพาะฐานข้อมูลที่ระบุ

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

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

เมื่อตั้ง ReturnSingleDatabase = true Power Query จะคืนเฉพาะตารางจากฐานข้อมูลที่ระบุเท่านั้น ทำให้รายการนำทางไม่ยุ่งเหยิง

### 5. ใช้ HierarchicalNavigation เพื่อจัดกลุ่มตารางตาม Schema

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

**ผลลัพธ์:** `ตารางแสดงรายชื่อตารางที่จัดกลุ่มตามชื่อ schema`

เมื่อตั้ง HierarchicalNavigation = true ตารางจะถูกจัดกลุ่มตามชื่อ schema ทำให้ง่ายต่อการนำทางเมื่อมีจำนวนตารางมากมาย

### 6. ใช้ CommandTimeout เพื่อตั้งเวลา timeout ของการส่งสอบถาม

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

**ผลลัพธ์:** `ตารางแสดงรายชื่อตารางพร้อมกำหนดให้การส่งสอบถามมี timeout 5 นาที`

สำหรับฐานข้อมูลขนาดใหญ่หรือสอบถาม heavy query สามารถเพิ่มเวลา CommandTimeout โดยใช้ #duration(days, hours, minutes, seconds)

## หมายเหตุเพิ่มเติม

- ใช้ ReturnSingleDatabase = true เพื่อให้ได้เฉพาะตารางจากฐานข้อมูลที่ระบุ ไม่ต้องโหลดตารางจากฐานข้อมูลอื่นๆ

- ใช้ HierarchicalNavigation = true เมื่อมีจำนวนตารางมากมายเพื่อให้ง่ายต่อการจัดการและนำทาง

- ใช้ Query option ในการเขียน SQL แบบเหมาะสมเพื่อดึงเฉพาะข้อมูลที่ต้องการ ลดปริมาณข้อมูลที่ต้องโหลด

- ตั้ง CommandTimeout ให้เหมาะสมสำหรับฐานข้อมูลขนาดใหญ่หรือสอบถาม heavy query

- ตรวจสอบการตั้งค่า TreatTinyAsBoolean เพื่อให้แน่ใจว่าคอลัมน์ tinyint ถูกตีความอย่างถูกต้อง

- ใช้ OldGuids = false (ค่าเริ่มต้น) เพื่อปฏิบัติต่อ char(36) ว่าเป็น GUID แทนที่จะเป็น binary(16)

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

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

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

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

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

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

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

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

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

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

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

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: MySQL.Database](https://learn.microsoft.com/en-us/powerquery-m/mysql-database) _(official)_
- [Power Query How - M Function Reference](https://powerquery.how) _(article)_

---

_Source: [https://www.thepexcel.com/functions/power-query/accessing-data-functions/mysql-database/](https://www.thepexcel.com/functions/power-query/accessing-data-functions/mysql-database/)_
