DuckDB 实战笔记 - 2026-09-12
用 DuckDB 30 秒搞定一年的账单分析,不用 Excel 也不用数据库
每月手动对账、算分类占比、找异常消费?我用一份 CSV + 一段 SQL 就全自动了。
场景:你从银行导出 transactions.csv,字段:date, category, amount, note。想看:每月净支出、Top 消费类别、超过 500 元的异常单。
-- 直接读 CSV,无需导入
CREATE TABLE tx AS
SELECT date::DATE AS d, category, amount::DOUBLE AS amount, note
FROM read_csv_auto('transactions.csv');
-- 1) 每月净支出
SELECT strftime(d, '%Y-%m') AS month,
ROUND(SUM(amount), 2) AS net
FROM tx GROUP BY 1 ORDER BY 1;
-- 2) Top 消费类别
SELECT category, ROUND(SUM(amount), 2) AS total
FROM tx GROUP BY 1 ORDER BY total DESC LIMIT 5;
-- 3) 异常大额支出
SELECT d, category, amount, note
FROM tx WHERE amount > 500 ORDER BY amount DESC;
为什么用 DuckDB:不用装数据库、不用起服务,直接 read_csv_auto 读文件;聚合几万行毫秒级;还能一条 SQL 同时查 CSV 和 Parquet。Excel 卡、Pandas 要写一堆代码、SQLite 还得先建表导数据——DuckDB 直接省掉这些。
立刻能用:把 CSV 换成你自己的账单,改下金额阈值,跑一遍就有结果。想每周自动跑?套个 cron 或 GitHub Actions 即可。