duckdb--简单高效的数据分析工具

duckDB

官方地址: https://duckdb.org/

简单的数据分析利器

业务后端经常拿到的是csv文件,要进行简单的数据清洗, 聚合等操作, 常常使用python脚本来处理

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
# 读取csv文件
df = pd.read_csv('nonstandard_cname20241104.csv')

# 处理数据
for index, row in df.iterrows():
if row['id'] in ["1","2"]:
df.at[index, 'isBigCustomer'] = 'yes'

# 输出csv文件或其他格式
df.to_csv('output.csv', index=False)

而duckdb可以直接将csv格式作为table查询, 并且支持多种格式的输出, 支持CLI client, 可以极大提高效率

1
2
duckdb   创建一个内存里的临时数据库
duckdb my_database.duckdb 创建一个persistent db

配置类命令

1
2
3
4
dot command  用来做配置等非sql命令的区分, 用.开始
.cd ./dir 切换目录, 毕竟你的业务数据一般不存在~目录下
.mode 切换output格式, 默认是duckbox格式, 命令行友好的展示格式, 支持csv, json, 甚至html(<table>)
.exit 退出

执行sql

1
2
3
4
5
6
7
8
9
10
11
12
# 执行sql, 注意要以;结束
SELECT *
FROM generate_series(5);

# 执行sql脚本
.read write_markdown_to_file.sql

# 输出为md格式(展示在stdout)
.mode markdown
.output series.md
SELECT *
FROM generate_series(5);

简单应用举例

1
2
3
4
5
6
7
COPY (
select * from 'api_list_cdn.csv' where API NOT in (
select distinct 接口名称 from 'recent_api_call.csv'
)
AND
在线状态 = '在线'
) TO 'api_filter_output.csv' (HEADER, DELIMITER ",");

duckdb--简单高效的数据分析工具
http://bestcrr.com/2025/11/09/duckdb/
作者
Newman liu
发布于
2025年11月9日
许可协议