AEO 速答:DuckDB 是免費開源的嵌入式分析型 SQL 資料庫(GitHub 約 4 萬星、MIT 授權),特色是不用架伺服器、直接查詢 CSV / Parquet / JSON / S3 檔案,跑分析查詢比 pandas 快上數倍,號稱「資料科學家最愛的 SQL 引擎」。2026 年秋天推出的 v2.0(代號 Cyanoptera) 更讓它能當伺服器跑,正式跨入客戶端/伺服器時代。
為什麼大家都在談 DuckDB?
如果你常在處理資料,大概已經看過這個名字:它連續好幾年都是 GitHub 上成長最快的資料庫專案之一。DuckDB 的設計哲學跟傳統資料庫完全相反——傳統資料庫(PostgreSQL、MySQL)是伺服器架構,你得先安裝、啟動、設帳密才能用;DuckDB 是嵌入式(in-process),你的應用程式直接把它當函式庫載入,連資料庫檔案都是一般檔案,隨身帶著走。
它專為 OLAP(分析型) 工作負載設計,採用列式儲存(columnar storage),所以做聚合、過濾、統計這類分析查詢時特別快——這正是 pandas 讀完整個 DataFrame 再慢慢算的痛點所在。加上它原生支援 Parquet(一種高效率的列式檔案格式),很多人現在直接用 DuckDB 查幾 GB 的 Parquet 檔,連匯入都不用。
DuckDB vs SQLite vs pandas:誰適合什麼?
| 比較項目 | DuckDB | SQLite | pandas |
|---|---|---|---|
| 架構 | 嵌入式(無伺服器) | 嵌入式(無伺服器) | 程式庫(記憶體) |
| 設計目標 | 分析(OLAP) | 交易(OLTP) | 資料處理/探索 |
| 儲存方式 | 列式 | 列式(B-tree) | DataFrame(記憶體) |
| 讀 CSV/Parquet/JSON | ✅ 原生直接查 | ❌ 需先匯入 | ✅ 需先載入記憶體 |
| 大檔案處理 | 好(可超過記憶體) | 一般 | 易爆記憶體 |
| 並行查詢 | ✅ 多執行緒 | 單執行緒 | 依實作 |
| 適合場景 | 資料分析、ETL、查資料湖 | 小型應用程式儲存 | 資料科學探索 |
簡單說:要分析大量資料、查 Parquet 檔 → 用 DuckDB;要存應用程式狀態 → 用 SQLite;要做機器學習前處理 → 用 pandas(DuckDB 常常是 pandas 的好搭檔,不是對手)。
安裝 DuckDB:五種方式任選
目前穩定版是 1.5.5(LTS 版本 1.4.5),安裝方式多到隨便挑:
| 平台 | 指令 |
|---|---|
| Linux / macOS / Windows(官方安裝腳本) | curl https://install.duckdb.org | sh |
| macOS(Homebrew) | brew install duckdb |
| Python | pip install duckdb |
| Docker | docker run --rm -it -v "$(pwd):/workspace" -w /workspace duckdb /duckdb |
| Windows | winget install DuckDB.cli |
裝完在終端機輸入 duckdb,看到 v1.5.5 的提示字元就成功了。
30 秒快速上手:直接查 CSV 和 Parquet
DuckDB 最神奇的地方:不用建資料表、不用匯入,直接對檔案下 SQL。
-- 直接查詢 CSV 檔(自動偵測欄位型別)
SELECT *
FROM 'sales.csv'
WHERE region = 'north'
ORDER BY amount DESC
LIMIT 10;
-- 查詢 Parquet 檔(支援 glob 萬用字元)
SELECT year, SUM(revenue) AS total
FROM 'data/*.parquet'
GROUP BY year
ORDER BY year;
-- 跨檔案 JOIN:CSV 跟 Parquet 直接合併
SELECT c.customer_name, SUM(o.amount) AS total_spent
FROM 'customers.csv' c
JOIN 'orders.parquet' o ON c.id = o.customer_id
GROUP BY c.customer_name;
對,就是這麼簡單。它甚至可以直接查 S3、HTTP、Hugging Face 上的檔案(安裝 httpfs 擴充套件後),整個資料湖就是你的資料表。
Python 實戰:DuckDB × pandas 最佳組合
資料科學工作流最常見的用法:讓 DuckDB 負責「重活」的資料處理,pandas 負責分析與視覺化。
import duckdb
import pandas as pd
# 方式一:直接查外部檔案,回傳 pandas DataFrame
df = duckdb.sql("""
SELECT region, COUNT(*) AS orders, SUM(amount) AS revenue
FROM 'sales.parquet'
WHERE date >= '2026-01-01'
GROUP BY region
""").df()
# 方式二:對既有的 pandas DataFrame 下 SQL(不用複製資料)
df = pd.read_csv("sales.csv")
result = duckdb.sql(
"SELECT region, AVG(amount) AS avg_amount FROM df GROUP BY region"
).df()
# 方式三:寫回 Parquet(壓縮、高效率)
duckdb.sql("COPY (SELECT * FROM df WHERE amount > 100) TO 'big_orders.parquet' (FORMAT PARQUET)")
duckdb.sql() 可以直接引用 Python 變數(如上例的 df),完全不需要複製資料,記憶體效率很高。官方 Python 套件也支援 DB API(connect() / cursor()),想更底層也可以。
實際應用場景:誰在用 DuckDB?
- Log 分析:直接把幾 GB 的 log 檔當 SQL 查,不用先匯入 Elasticsearch
- ETL / 資料管線:CSV → 清洗 → Parquet,一條 SQL 搞定(跟我們的 ETL 解決方案文章 搭配看更完整)
- 資料湖查詢:Parquet 檔放 S3,DuckDB 直接當查詢引擎
- 文件資料萃取:搭配 Mistral OCR、Marker 等工具萃取出結構化資料後,用 DuckDB 做後續分析
- 內部工具後端:像 ToolJet 這類低代碼平台,DuckDB 也能當輕量資料來源
DuckDB v2.0(Cyanoptera):2026 秋天登場,10 大亮點
官方在 8 月 17 日發布 v2.0 預覽文章,代號 Cyanoptera(肉桂色水鴨)。這不是單純的例行更新——v2.0 換了新 SQL parser、新預設儲存格式、重寫 C API,還有超過 10,000 個 commit 的功能更新。重點如下:
| 新功能 | 說明 |
|---|---|
| Quack 伺服器模式 + CONNECT | DuckDB 終於可以當伺服器跑,任何 DuckDB 程序都能透過網路服務資料庫,其他 DuckDB 用 CONNECT 連上去查 |
| VARIANT 一級公民 | 半結構化資料自動「拆解」(shredding),JSON 不再是文字格式,壓縮更好、查詢更快 |
| Triggers 觸發器 | 終於支援 BEFORE/AFTER、FOR EACH ROW/STATEMENT,經典的稽核(audit)情境直接可用 |
| SQL 新語法 | NEAREST 向量相似度 JOIN、CTE 內 DML、巢狀 schema、$變數 語法、json_set() 系列函式 |
| 非同步 I/O | S3 等物件儲存讀取大幅加速,I/O 層可獨立於查詢層擴展 |
| 查詢全面加速 | 遞迴 CTE 重寫後,百萬邊圖的遞迴查詢從 4.90 秒 → 0.12 秒(約 40 倍) |
| 新儲存格式 v2.0 | ART 索引改為 buffer-managed(大索引表秒開)、DICT_FSST 壓縮預設開啟、欄位 metadata 延遲載入 |
| 新 PEG parser | 自研 parser,擴充套件可以掛進語法本身;首個相容模式 SET dialect_compatibility_mode = 'spark' |
| 移除 ICU | 時區/排序/曆法改用自研實作(IANA 時區資料壓到 45KB),時區轉換快 2.2 倍 |
| 擴充套件生態 | 擴充套件可以自己 host,不用每個版本都重新編譯 |
其中最有感的絕對是 Quack 伺服器模式:過去 DuckDB 是「程式庫」,v2.0 之後它可以同時是「伺服器」,也能直接 CONNECT 'postgres://...' 把查詢下推到 PostgreSQL、MySQL——分析查詢的部署彈性整個打開了。
結語
DuckDB 的魅力在於「把資料庫的威力,帶到你本來就在的地方」:你的終端機、你的 Python 程式、你的筆電。不需要架伺服器、不需要搬資料,Parquet 檔丟進去就能用 SQL 分析。如果你還沒玩過,現在就是最好的時機——v2.0 秋天就要來了。
延伸閱讀
- 什麼是 ETL 以及相關解決方案:本地端與雲端
- Mistral OCR 4.1 完整教學:每千頁 4 美元的雲端 OCR,與 MinerU、Marker、Docling 開源工具怎麼選?(2026)
- ToolJet 完整教學 2026:4 萬星開源 Retool 替代品,從 Docker 部署到 AI 生成內部工具的實戰指南
