Featured image of post DuckDB 入门教程:不懂编程也能用的数据分析神器

DuckDB 入门教程:不懂编程也能用的数据分析神器

DuckDB 是什么?它和 MySQL/SQLite 有什么区别?本文用最通俗的语言讲清 DuckDB 的5大核心优势,看完你就知道为什么全球数据分析师都在用它。

一个故事让你理解 DuckDB

想象这个场景:

你是公司的运营,每天都要看销售报表。数据在 Excel 里,但文件太大(几百 MB),Excel 打开要5分钟,筛选一下又要卡半天。

你求助技术部门,对方说「下周排期」。你只好硬着头皮学 Python,装 Pandas,结果光配环境就花了一下午,最后发现内存不够——8GB 的电脑根本跑不动。

这时候,一个朋友发给你一个 不到30MB 的小程序,说:

「双击打开,输入 SELECT * FROM '销售数据.csv',回车。」

你试了一下——0.3 秒,数据出来了。

这个程序,就是 DuckDB


DuckDB 到底是什么?

官方定义: 一个嵌入式列式数据库,专门做分析型查询(OLAP)。

人话版:

  • 嵌入式 → 不用装服务器,不用配端口,下载一个文件就能用
  • 列式存储 → 处理大数据的性能,比 MySQL/SQLite 快 10-100 倍
  • 分析型 → 专为「算总数、求平均、分组汇总」这种查询而生

一句话:DuckDB = Excel 的易用性 + 数据库的查询能力 + 超级快的分析速度。


DuckDB 的 5 大核心优势

优势一:零配置,双击即用

这不是夸张。下载下来直接运行:

# 一行命令安装(Mac/Linux)
curl -sL https://install.duckdb.org | sh

# 或者 Windows 下载 zip,解压后双击 duckdb.exe

安装完不用配任何东西,直接进交互界面:

SELECT 'Hello, DuckDB!' AS greeting;

输出一个漂亮的表格,全程不到 10 秒。

对比一下:

  • MySQL:安装 → 启动服务 → 配用户 → 建库 → 建表 → 才能查
  • PostgreSQL:同上,可能更复杂
  • DuckDB:下载 → 打开 → 查

这就是嵌入式数据库的威力——它跑在你的程序里,不跑在服务器上。


优势二:直接查文件,不「导入」数据

这是 DuckDB 最让人上头的功能。

绝大多数数据库要求你先「建表 → 定义结构 → 导入数据」才能查询。DuckDB 不需要。

-- 直接查 CSV,就像它是表一样
SELECT region, 
       COUNT(*) AS 订单数,
       SUM(amount) AS 总金额
FROM 'sales_2026.csv'
GROUP BY region
ORDER BY 总金额 DESC;

支持的文件格式多到离谱:

格式写法场景
CSVFROM 'data.csv'从 Excel 导出的表格
ParquetFROM 'data.parquet'大数据格式,又快又省空间
JSONFROM 'data.jsonl'API 导出的日志文件
ExcelFROM 'data.xlsx'直接读 Excel 文件
ArrowFROM 'data.arrow'高性能二进制格式

最实用的场景: 老板甩给你一个 CSV,不用打开 Excel 卡死,不用写 Python 脚本,直接在终端里一条 SQL 就能算出结果。


优势三:处理大数据,比你想的快得多

DuckDB 用列式存储,专门为分析型查询优化。

同样是求平均值,MySQL 和 DuckDB 的底层逻辑完全不同:

  • MySQL(行式存储): 读一行→找到金额字段→记下来→读下一行……重复 1000 万次
  • DuckDB(列式存储): 直接把「金额」那一列数据整块拉出来→一次算完

真实基准测试数据(来源于社区):

操作SQLiteDuckDB速度差
1亿行COUNT8.5s0.3s28x
1亿行SUM+GROUP BY崩溃1.2s
10GB CSV 查询内存不足2.1s

注意: 这些数据不是在 128GB 的服务器上跑出来的,是在你办公用的笔记本电脑上。

这也是为什么 AI 和数据圈都在说:「DuckDB 是数据分析界的瑞士军刀」。


优势四:Python 生态无缝衔接

如果你是 Python 用户,DuckDB 会彻底改变你处理数据的方式。

安装:

pip install duckdb

告别 Pandas 的复杂 API:

import duckdb

# 用 SQL 处理 Pandas DataFrame!
df = duckdb.sql("""
    SELECT 
        department,
        AVG(salary) AS avg_salary,
        COUNT(*) AS headcount
    FROM df_employees
    WHERE salary > 80000
    GROUP BY department
    ORDER BY avg_salary DESC
""").df()

你不需要学 Pandas 的 groupbymergeapply 等几十个方法。 一行 SQL 全搞定。

而且 DuckDB 能直接查 Pandas DataFrame、PyArrow Table、Polars DataFrame——无论数据在什么格式里,统一用 SQL 查询。

# 查询 Parquet 文件,结果转 Pandas
result = duckdb.sql("""
    SELECT date_trunc('month', order_date) AS month,
           SUM(revenue) AS total
    FROM 'sales/*.parquet'
    GROUP BY month
    ORDER BY month
""").df()

用 DuckDB 做数据分析,相当于给 Python 装上了 SQL 引擎——简单、快、不挑数据格式。


优势五:小到离谱,强到离谱

DuckDB 的可执行文件只有 不到 30MB

打包到 Docker 镜像里?200MB 的基础镜像 + 30MB 的 DuckDB = 230MB。对比 Spark 镜像动辄 2GB+。

嵌入到 Web 应用里?可以在浏览器中跑 DuckDB-WASM,前端直接做数据分析。

能做的事:

  • ✅ 替代 Excel 处理大文件
  • ✅ 替代 Pandas 做数据分析
  • ✅ 跑在 CI/CD 里做数据测试
  • ✅ 嵌入到 Streamlit 应用里做数据分析后台
  • ✅ 和 dbt 配合做数据转换
  • ✅ 在浏览器里直接分析数据

不能做的事(认清边界):

  • ❌ 不能替代 MySQL/PostgreSQL 做在线交易系统
  • ❌ 不能单机处理 100TB+ 级别的数据(那是 Spark 的活)
  • ❌ 不支持高并发写操作(它是分析型,不是事务型)

谁应该学 DuckDB?

角色为什么学
数据分析师告别 Excel 卡顿,用 SQL 直接分析 CSV/Excel
Python 开发者替代 Pandas 的复杂 API,SQL 更简洁更快
数据工程师快速做 ETL、数据验证,不用搭 Spark 集群
后端开发者嵌入到应用里做本地分析,比 SQLite 快很多
产品/运营问技术要数据太慢?自己用 SQL 查 CSV 秒出结果

10分钟上手 DuckDB

第一步:安装

# macOS
brew install duckdb

# Linux / WSL
curl -sL https://install.duckdb.org | sh

# Windows
# 下载:https://duckdb.org/download/ → duckdb.exe

# Python
pip install duckdb

第二步:查数据

随便找一个 CSV 文件(Excel 可以另存为 CSV),运行:

duckdb

然后在 DuckDB 终端里:

SELECT * FROM '你的文件.csv' LIMIT 10;

如果你不知道用哪个文件,DuckDB 自带示例数据:

-- DuckDB 内置数据集
SELECT * 
FROM read_csv_auto('https://duckdb.org/data/weather.csv')
LIMIT 5;

第三步:算汇总

SELECT 
    city,
    AVG(temperature) AS 平均温度,
    MIN(temperature) AS 最低温,
    MAX(temperature) AS 最高温
FROM 'weather.csv'
GROUP BY city;

架构图

总结

DuckDB 最大的价值不是「数据库」,而是 让数据分析变得极度简单

在 Excel 和 Spark 之间,有一大片空白地带——数据大到 Excel 打不开,又小到不值得上 Spark。这个地带,就是 DuckDB 的天下。

如果看了这篇文章想试试,直接装一个,找个 CSV 文件跑条 SQL,5 分钟就能感受到它的爽。

相关文章:


📖 更多内容: https://duckdblab.org #DuckDB #入门教程 #数据分析 #SQL #数据工具

📺 Watch video tutorials → DuckDB Lab YouTube

Subscribe for more DuckDB & AI automation tutorials

使用 Hugo 构建
主题 StackJimmy 设计