DuckDB 一招:在 CTE 中写 DML——一个 SQL 搞定 ETL 流水线

DuckDB v2.0 支持在 CTE 中使用 INSERT、UPDATE、DELETE 和 COPY。用一个 SQL 查询替代多步 ETL,代码量减少 40%。

问题:ETL 脚本是维护噩梦

你正在构建一个数据流水线。每天需要:

  1. 从 CSV 加载原始数据
  2. 清洗和转换
  3. 插入目标表
  4. 导出汇总报表

传统做法?一个 20+ 行的 Python 脚本,或者一个串联多个 SQL 命令的 shell 脚本:

# Python 方案——6 个步骤,40 行代码
import duckdb

con = duckdb.ATTACH ("pipeline.duckdb")

# 步骤 1:加载原始数据
con.execute("CREATE TABLE raw AS SELECT * FROM read_csv('data.csv')")

# 步骤 2:清洗数据
con.execute("""
---

## 本文信息

| 项目 | 内容 |
|------|------|
| DuckDB 版本 | v1.5.x(部分功能基于 v2.0 Preview) |
| 最后验证 | 2026-09-12 |
| 测试环境 | Linux / x86_64 / 16GB RAM |
| 官方文档 | [DuckDB Documentation](https://duckdb.org/docs/) |
| GitHub | [pengzz9527/duckdb-blog](https://github.com/pengzz9527/duckdb-blog) |

如发现错误,欢迎通过 [GitHub Issue](https://github.com/pengzz9527/duckdb-blog/issues) 或邮件 contact@duckdblab.org 反馈。

📺 Watch video tutorials → Olap Studio YouTube

Subscribe for more DuckDB & AI automation tutorials