① 标题党#
主标题:让 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 直查 / 结论卡