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

# PostgreSQL.Database – เชื่อมต่อฐานข้อมูล PostgreSQL

> PostgreSQL.Database ใช้สำหรับเชื่อมต่อฐานข้อมูล PostgreSQL และดึงรายชื่อตารางและมุมมอง

## คำอธิบาย

PostgreSQL.Database ใช้สำหรับเชื่อมต่อฐานข้อมูล PostgreSQL และดึงรายชื่อตารางและมุมมอง

## Syntax

```excel
= PostgreSQL.Database(server as text, database as text, [options as nullable record]) as table
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| server | Yes | text |  | ชื่อเซิร์ฟเวอร์ PostgreSQL หากต้องการระบุพอร์ต ให้ใช้รูปแบบ 'server:port' (เช่น 'localhost:5432') |
| database | Yes | text |  | ชื่อฐานข้อมูล PostgreSQL ที่ต้องการเชื่อมต่อ |
| options | No | record (optional) | null | ตัวเลือกเพิ่มเติมสำหรับการเชื่อมต่อ เช่น Query, CommandTimeout, CreateNavigationProperties, HierarchicalNavigation เป็นต้น |

## ตัวอย่าง

### 1. เชื่อมต่อพื้นฐานกับ PostgreSQL

```excel
= PostgreSQL.Database("localhost", "mycompany_db")
```

**ผลลัพธ์:** `ตารางที่แสดงรายชื่อ tables และ views ทั้งหมดในฐานข้อมูล mycompany_db`

เชื่อมต่อกับเซิร์ฟเวอร์ PostgreSQL บนเครื่องชื่อ localhost (ใช้พอร์ตเริ่มต้น 5432) และเปิดฐานข้อมูล mycompany_db

### 2. เชื่อมต่อโดยระบุพอร์ตเฉพาะ

```excel
= PostgreSQL.Database("db-server.company.com:5433", "sales_db")
```

**ผลลัพธ์:** `ตารางรายชื่อ tables จากฐานข้อมูล sales_db บนเซิร์ฟเวอร์ที่ใช้พอร์ต 5433`

เชื่อมต่อเซิร์ฟเวอร์ PostgreSQL ตัวอื่นที่ใช้พอร์ต 5433 แทนพอร์ตเริ่มต้น

### 3. เชื่อมต่อพร้อมระบุ SQL Query โดยตรง

```excel
let
    Source = PostgreSQL.Database(
        "localhost",
        "mycompany_db",
        [Query = "SELECT * FROM customers WHERE country = 'Thailand'"]
    )
in
    Source
```

**ผลลัพธ์:** `ตารางที่มีข้อมูลลูกค้าจากประเทศไทยเท่านั้น`

ใช้ตัวเลือก Query เพื่อรันคำสั่ง SQL นอก Power Query โดยตรง ไม่ต้องโหลดตารางทั้งหมดแล้วค่อย filter

### 4. เชื่อมต่อพร้อมตั้งค่า Command Timeout

```excel
= PostgreSQL.Database(
    "postgres.db",
    "analytics_db",
    [CommandTimeout = #duration(0, 0, 30, 0)]
)
```

**ผลลัพธ์:** `ตารางรายชื่อ tables โดยรอการตอบสนองสูงสุด 30 วินาที`

ระบุ CommandTimeout ที่ 30 วินาที เพื่อหลีกเลี่ยงการรอคอยนาน ถ้าคิวรีใช้เวลามากกว่านี้จะหยุดโดยอัตโนมัติ

### 5. เชื่อมต่อพร้อมเปิดใช้ Hierarchical Navigation

```excel
= PostgreSQL.Database(
    "localhost",
    "mycompany_db",
    [HierarchicalNavigation = true]
)
```

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

ตั้งค่า HierarchicalNavigation เป็น true เพื่อให้ tables จัดกลุ่มตามชื่อ schema แทนการแสดงแบบแบน

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

- ใช้รูปแบบ 'server:port' หากเซิร์ฟเวอร์ PostgreSQL ไม่ใช้พอร์ตเริ่มต้น 5432

- ถ้าต้องการรัน SQL query ที่ซับซ้อน ให้ใช้ Query option และเขียน SQL statement ที่สมบูรณ์

- ตั้งค่า CommandTimeout ที่เหมาะสม โดยเฉพาะสำหรับคำสั่ง SQL ที่ใช้เวลานาน

- ใช้ HierarchicalNavigation = true เมื่อฐานข้อมูลมีหลายชื่อ schema เพื่อให้ง่ายต่อการค้นหาตาราง

- ทดสอบการเชื่อมต่อบนเครื่องในครั้งแรก แล้วค่อยเปลี่ยนเป็น server name เมื่อต้องการเชื่อมต่อระยะไกล

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

**Q: PostgreSQL.Database ต่างจาก SQL.Database อย่างไร**

PostgreSQL.Database เชื่อมต่อกับฐานข้อมูล PostgreSQL โดยใช้พารามิเตอร์ server และ database ส่วน SQL.Database ใช้สำหรับ Microsoft SQL Server ทั้งสองเป็นฟังก์ชันเฉพาะสำหรับแต่ละ DBMS

**Q: ฟังก์ชันนี้ส่งคืนอะไร**

ส่งคืนตารางที่แสดงรายชื่อ SQL tables และ views ทั้งหมดในฐานข้อมูลที่ระบุ คุณสามารถเลือกตารางหรือมุมมองเฉพาะเพื่อโหลดข้อมูลได้

**Q: ต้องใช้ Query parameter เพื่อให้ได้ข้อมูลจริง**

ไม่จำเป็น คุณสามารถใช้ PostgreSQL.Database ตามปกติแล้วเลือกตารางที่ต้องการจาก navigator แล้วค่อยกำหนด filter หรือ transformation ใน Power Query ได้ Query parameter เป็นตัวเลือกสำหรับกรณีที่ต้องการรัน SQL โดยตรง

**Q: Connection timeout กับ Command timeout ต่างกันยังไง**

Connection timeout คือเวลารอเชื่อมต่อกับฐานข้อมูล ส่วน Command timeout คือเวลารอผลลัพธ์จากคำสั่ง SQL ตามปกติค่าเริ่มต้นของ Command timeout คือ 10 นาที

**Q: CreateNavigationProperties ทำให้อะไรต่าง**

เมื่อตั้งเป็น true (ค่าเริ่มต้น) ฟังก์ชันจะสร้าง navigation properties ที่ให้คุณคลิกตัวเลือก tables แทนที่จะแสดง raw table list

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

- [PostgreSQL.Database - Microsoft Learn](https://learn.microsoft.com/en-us/powerquery-m/postgresql-database) _(official)_
- [PostgreSQL Connection Strings - Microsoft Learn](https://learn.microsoft.com/en-us/power-query/connectors/postgresql) _(official)_
- [Power Query M Function Reference](https://learn.microsoft.com/en-us/powerquery-m/) _(official)_

---

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