事实核验:2026-08-16 · 状态:维护中

记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。

warning 适用范围与待维护事项

本路线面向已有基础SQL与Python能力、准备开展单机文件分析和轻量应用实践的读者,不是完整部署教程。Python示例需自行准备orders.parquet,至少包含可按日期处理的pay_time、可求和的amount及status字段;文中未附练习数据。小团队应用仍需评估并发写入、资源上限和访问权限,Agent沙箱还需限制文件、网络与扩展访问。文档指向current版本,具体API和扩展行为应按实际安装版本确认。

DuckDB学习路线图

abstract 一句话定位

DuckDB 是“装在你进程里的分析型数据库”。它最适合用 SQL 直接分析本地 CSV、Parquet、JSON、Pandas、Polars、Arrow 数据。对数据人来说,它补上了 Pandas 太慢、Spark 太重之间的那块空地。

如果你经常在 Notebook 里写 Pandas,但数据一大就慢;或者你很会 SQL,但不想为了一个本地分析任务搭数据库;那 DuckDB 很值得学。

前置阅读:SQL学习路线图、从Pandas到Polars与DuckDB。


1. DuckDB解决什么问题

%%{init: {"theme":"base","themeVariables":{"fontFamily":"PingFang SC, -apple-system, BlinkMacSystemFont, sans-serif","primaryColor":"#EEF5FF","primaryTextColor":"#1F2937","primaryBorderColor":"#4B79A1","lineColor":"#64748B","secondaryColor":"#F3F8F3","tertiaryColor":"#FFF7E8"},"flowchart":{"curve":"basis","htmlLabels":true,"padding":24}}}%%
flowchart TD
    A["本地数据分析任务 "] --> B["Pandas 内存压力 "]
    A --> C["搭建服务型数据库太重 "]
    A --> D["分布式集群成本过高 "]
    A --> E["希望复用 SQL 逻辑 "]
    B --> F["DuckDB 核心 "]
    C --> F
    D --> F
    E --> F
    F --> G["直接查询文件 "]
    F --> H["嵌入式 OLAP 引擎 "]
    F --> I["Python 集成 "]
    F --> J["结果转为 Pandas / Polars / Arrow 格式 "]

    classDef problem fill:#FFF7E8,stroke:#C58B2A,color:#1F2937,stroke-width:1.5px
    classDef core fill:#EEF5FF,stroke:#4B79A1,color:#1F2937,stroke-width:2px
    classDef capability fill:#F3F8F3,stroke:#5B8C5A,color:#1F2937,stroke-width:1.5px
    class A,B,C,D,E problem
    class F core
    class G,H,I,J capability

官方 Python API 文档说明,DuckDB 可以直接读取 CSV、Parquet、JSON,也可以直接查询 Pandas DataFrame、Polars DataFrame 和 Arrow Table,并把结果转成 Pandas、Polars、Arrow、NumPy 等格式。

这意味着 DuckDB 很适合成为“Python 数据工作流里的 SQL 引擎”。


2. 学习路线

顺序 专题 学习结果
1 [[【技术与工具】/DuckDB/01-直接查询文件与SQL实践 直接查询文件与SQL实践]]
2 [[【技术与工具】/DuckDB/02-Python集成与数据交换 Python集成与数据交换]]
3 [[【技术与工具】/DuckDB/03-性能优化与扩展管理 性能优化与扩展管理]]

阶段一:SQL on Files

目标:不用建库,直接查文件。

你要掌握:

  • SELECT * FROM 'file.parquet'
  • read_csv / read_parquet
  • Parquet 分区目录
  • CSV 类型推断与显式 schema
  • COPY 导出结果

这阶段适合和 AI时代分析SQL实战 配合,把留存、漏斗、Cohort SQL 跑在本地文件上。

阶段二:Python集成

目标:让 DuckDB 和 Python 生态互通。

你要掌握:

import duckdb

result = duckdb.sql("""
SELECT
    DATE_TRUNC('day', pay_time) AS dt,
    SUM(amount) AS gmv
FROM 'orders.parquet'
WHERE status = 'paid'
GROUP BY 1
ORDER BY 1
""").df()

重点不是背 API,而是理解什么时候 .df(),什么时候 .pl(),什么时候 .arrow()。

阶段三:本地数据集市

目标:把一次性分析沉淀为可复用本地数据集市。

你要掌握:

  • 持久化 DuckDB 数据库文件
  • 创建表和视图
  • 导入导出 Parquet
  • 与 dbt Core 或 Ibis 结合
  • 管理中间结果

阶段四:嵌入式分析应用

目标:把 DuckDB 放进应用里,做轻量分析后端。

适合场景:

  • Streamlit 数据应用
  • 本地报表工具
  • 单机数据质量检查
  • 文件数据探索服务
  • 小团队内部分析平台

3. DuckDB适合和不适合

场景 是否适合 说明
本地 Parquet 分析 很适合 不必先读入 Pandas
Notebook SQL 探索 很适合 SQL 逻辑清晰,结果可转 DataFrame
小团队轻量数据应用 适合 部署简单,运维成本低
企业级高并发 OLTP 不适合 DuckDB 不是 MySQL/PostgreSQL 替代品
PB 级分布式计算 不适合 该用 Spark/Flink/Trino 等
AI 作品集项目 很适合 低成本、可复现、易展示

tip 判断

DuckDB 不是“小 Spark”,也不是“轻量 MySQL”。它是面向分析的嵌入式数据库。


4. AI时代为什么要学DuckDB

4.1 AI生成SQL更容易本地验证

让 AI 生成 SQL,然后用 DuckDB 在样例数据上跑,可以检查该样例上的执行结果;仍需核对业务口径、边界情况和目标引擎方言,不能仅凭运行成功认定 SQL 正确。

4.2 作品集更容易落地

你可以用 DuckDB + Parquet + Streamlit 快速构建一个数据产品 Demo,不需要复杂集群。

4.3 与Agent工作流天然契合

Agent 可以通过受控工具调用 DuckDB,在沙箱中分析文件,输出结果。在限制文件访问、网络、扩展加载和资源使用,并避免暴露企业数仓凭证的条件下,这种方式可降低直连企业数仓带来的部分风险;安全性仍取决于沙箱与权限配置。

相关:Agent安全与沙箱执行。


5. 外部参考


6. 相关学习入口