七万号·数据平台实战手记

Back

① 标题党#

主标题让 DuckDB 去读 MySQL、PostgreSQL、Parquet?一个 SQL 通吃 备选A它的野心不是做数据库,是做"统一查询入口" 备选B(短视频)一张 SQL,查遍所有库

② 开场钩子#

数据散在 MySQL、PostgreSQL、Parquet、CSV……每个都有自己的引擎。直到我让 DuckDB 用一条 SQL,把它们全都查了——这就是联邦查询。

③ 主角特性:跨源查询 / 多数据源 attach#

  • attach:DuckDB 可以 attach 外部数据库(PostgreSQL/MySQL 等),像本地表一样查。
  • 跨源 JOIN:一条 SQL 里 join MySQL 的表 + PostgreSQL 的表 + Parquet 文件,优化器统一调度。
  • 读多源文件:parquet/csv/json/s3 原生支持,分析场景一个文件就是一个表。

取舍:联邦查询有关联开销,适合”低频跨源分析”,不适合高频热路径。

④ 最小可复现#

-- 把 parquet 和 CSV 当表查
SELECT * FROM 'orders.parquet'
JOIN 'customers.csv' c ON o.cid = c.id;

-- attach 外部 PG(需扩展)
ATTACH 'postgres://host:5432/db' AS pg;
SELECT * FROM pg.users;
sql

⑤ 结论#

DuckDB 不只想做自己的库,它想把”所有数据”都纳入一张 SQL。联邦查询,是它当”统一数据入口”的第一步。

⑥ 配图脚本#

多数据源汇聚到 DuckDB / 跨源 join 链路 / parquet/csv 直查 / 结论卡


联邦查询:让 DuckDB 去读别人的库
https://realcpf.tech/blog/duckdb-04
Author 刘佳成
Published at 2026年9月3日