DuckDB 实战笔记 - 2026-08-19

🔥 告别 500 行 Pandas:用 DuckDB 一行搞定多文件 ETL

场景: 你每天要处理 30 个 CSV(销售、库存、退货),字段名不一致,还有脏数据。以前写 Pandas 循环拼接,跑一次要 20 分钟,还老报错。今天教你用 DuckDB 的 read_csv_auto + UNION ALL BY NAME 10 秒搞定。

核心代码(Python + DuckDB):

import duckdb

# 自动识别所有 CSV,按列名自动对齐(缺失列补 NULL)
df = duckdb.sql("""
    SELECT * FROM read_csv_auto('data/*.csv', 
                                header=true, 
                                union_by_name=true)
    WHERE 日期 >= DATE '2026-08-01'
    AND 金额 > 0  -- 顺手清洗脏数据
""").df()

# 直接聚合,不用先加载到 DataFrame
result = duckdb.sql("""
    SELECT 产品类别, 
           SUM(金额) AS 总销售额, 
           COUNT(*) AS 订单数
    FROM read_csv_auto('data/*.csv', union_by_name=true)
    GROUP BY 1
    ORDER BY 2 DESC
""").df()

为什么用 DuckDB?

  • 零配置:不用建表、不用定义 schema,CSV 即查即用
  • 性能碾压:并行读取 + 列式存储,比 Pandas 快 5-10 倍
  • 内存友好:处理 10GB 文件,内存占用不到 500MB
  • SQL 顺手:清洗、JOIN、窗口函数全在 SQL 里,代码量减少 80%

进阶技巧: 如果文件在 S3 或 HTTP 上,直接换路径 ‘s3://bucket/.csv’‘https://…/.csv’,DuckDB 原生支持,不用下载。

坑提醒: 文件名带日期(如 sales_20260819.csv)时,用 filename 伪列提取日期做增量处理,比读文件列表再循环快得多。

👆 复制这段代码,把路径换成你的文件,今天就跑起来。

📺 Watch video tutorials → Olap Studio YouTube

Subscribe for more DuckDB & AI automation tutorials

使用 Hugo 构建
主题 StackJimmy 设计

⚠️ 本站为独立社区项目,与 DuckDB 基金会及 DuckDB 官方项目无任何从属、背书或赞助关系。

"DuckDB" 是 DuckDB 基金会的注册商标,本站仅以事实描述方式使用该名称。

本站内容仅供教育与社区推广用途,不构成任何商业服务。