首页龙虾技能列表 › chat2duckdb — DuckDB数据分析工具

chat2duckdb — DuckDB数据分析工具

v1.0.0

基于 DuckDB 引擎的高效数据分析工具;当用户需要对 CSV/JSON/Parquet/Excel 等数据文件进行 SQL 查询、数据分析、数据抽样或需要自动纠错的查询执行时使用

0· 75·0 当前·0 累计
by @cloudcba (船长的虾)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/1
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能的代码、指令和声明的依赖与本地 DuckDB 数据分析工具一致;没有迹象表明存在隐藏的网络数据泄露或无关的凭证访问。
评估建议
该技能似乎实现了其声称的功能:使用 DuckDB 对本地 CSV/JSON/Parquet/Excel 文件运行 SQL。在安装或运行之前,请考虑:(1) 在隔离环境(virtualenv)中安装列出的 Python 包(duckdb、pandas、numpy、openpyxl),以避免供应链问题;(2) 仅在可信的数据集上运行脚本——它执行任意 SQL 并会读取/写入本地文件,还可选择持久化 .duckdb 数据库;(3) references 文件与 SKILL.md 在 Excel 支持方面存在矛盾——请在安全测试中验证 Excel 行为;(4) 如有敏感数据问题,请检查包含的脚本(它包含本地文件 I/O,但没有网络调用或凭证访问)。如需在生产环境或敏感数据上运行,请在沙箱或容器中运行并审计输出。...
详细分析 ▾
用途与能力
名称/描述(DuckDB 数据分析)与提供的脚本和 SKILL.md 功能一致:将文件注册为表、SQL 执行、抽样、校正、导出和持久化。声明的 Python 依赖(duckdb、pandas、numpy、openpyxl)适合所述功能。
指令范围
运行时指令告诉代理/用户对本地文件运行包含的脚本并提供 SQL;脚本读取和写入本地文件并可能持久化 .duckdb 数据库——这对于该技能是预期的。注意:脚本执行用户提供的任意 SQL(预期功能),因此用户应避免在敏感系统上运行不受信任的 SQL。另有一个小的文档不一致:references/data-formats.md 说「当前版本不直接支持 Excel 文件」,而 SKILL.md 和脚本通过 openpyxl 提供了 Excel 处理。
安装机制
未提供自动安装规范(技能是指令+代码),但 SKILL.md 列出了 Python 依赖要求。这意味着依赖必须由代理运行时或用户(pip)安装。这是合理的,但如果运行时不提供这些 Python 包,技能将失败;没有外部下载 URL 或安装程序。
凭证需求
该技能不请求环境变量,不请求凭证,除了用户指定的数据和输出文件路径外,不引用配置路径。这与所述目的一致。
持久化与权限
always:false 和 user-invocable:true。脚本可以在用户指定的路径写入输出文件和可选的 DuckDB 文件(对于此工具是正常的)。该技能不请求持久化的平台级权限或修改其他技能的配置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/4/1

chat2duckdb v1.0.0 — 基于 DuckDB 引擎的高效数据分析工具初始版本发布。 - 支持 CSV、JSON、Parquet 和 Excel 文件的 SQL 查询、数据探索、自动纠错和抽样。 - 具有自然语言智能 SQL 生成、自动重试/错误修复和详细描述性分析模式。 - 支持将查询结果导出为 CSV、Excel、JSON 和 Parquet 格式。 - 包含性能建议、详细示例命令和数据分析工作流最佳实践指南。 - 核心功能通过脚本提供:`scripts/duckdb_analyzer.py`。

● 无害

安装命令 点击复制

官方npx clawhub@latest install chat2duckdb
镜像加速npx clawhub@latest install chat2duckdb --registry https://cn.clawhub-mirror.com

技能文档

任务目标

  • 本技能用于对数据文件进行快速、高效的 SQL 查询和分析
  • 能力包含:数据文件注册为表、自然语言转 SQL、查询执行、数据抽样、错误校正、分析结论生成
  • 触发条件:用户需要分析数据文件、执行 SQL 查询、探索数据结构、生成数据分析报告

前置准备

  • 依赖说明:安装 DuckDB 和 pandas
duckdb>=1.5.0
pandas>=2.0.0

核心功能

1. 数据探索(Describe 模式)

  • 基本信息:总行数、列数、表结构
  • 数值列统计:平均值、中位数、标准差、最大/最小值
  • 分类列统计:唯一值数量、最常见值、Top 值分布
  • 日期列统计:最早/最晚日期、唯一日期数
  • 数据质量:缺失值统计、完整性分析

2. SQL 查询执行

  • 智能 SQL 生成:根据自然语言描述自动生成 SQL
  • 自动重试机制:最多 3 次智能重试
  • SQL 校正引擎
- 语法错误自动修复(移除多余分号、逗号等) - 列名错误智能纠正(基于编辑距离匹配) - 引号规范化(双引号转单引号) - SQL 关键字大小写规范化
  • 数据抽样:支持按比例抽样查询,快速验证逻辑

3. 结果分析

  • 查询结果格式化输出
  • 执行时间和性能统计
  • 数据洞察和业务建议生成

操作步骤

步骤 1:数据准备

确认数据文件路径(CSV/JSON/Parquet/Excel 等格式)

步骤 2:数据探索

# 完整统计模式(推荐)
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe

# 简单模式(仅基本信息) python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe --simple

# 导出分析报告 python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe --output report.json

# Excel 文件(默认读取第一个工作表) python scripts/duckdb_analyzer.py --file_path ./data.xlsx --mode describe

# Excel 文件(指定工作表) python scripts/duckdb_analyzer.py --file_path ./data.xlsx --excel_sheet "sheetTitle" --mode describe

步骤 3:SQL 查询

# 基础查询
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
  --sql "SELECT  FROM data LIMIT 10"

# 聚合查询 python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \ --sql "SELECT category, SUM(price quantity) as total_sales FROM data GROUP BY category"

# 抽样验证(先在小样本上测试) python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \ --sql "SELECT FROM data WHERE price > 100" --sample_fraction 0.1

# 导出查询结果(支持 CSV/Excel/JSON/Parquet) python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \ --sql "SELECT FROM data" --output result.csv python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \ --sql "SELECT FROM data" --output result.xlsx

# 持久化到 DuckDB 文件(后续可直接关联查询) python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \ --persist_db_path ./analysis.duckdb --persist_table \ --sql "SELECT category, SUM(price quantity) as total_sales FROM data GROUP BY category"

步骤 4:结果分析

  • 查看查询结果和数据预览
  • 分析执行时间和重试次数
  • 根据结果生成业务洞察

步骤 5:数据持久化(可选)

  • --persist_db_path:指定 DuckDB 数据库文件路径
  • --persist_table:将注册表持久化为普通表(默认是临时表)
  • 典型用途:跨批次积累结果、后续多表关联查询、沉淀分析基表

资源索引

注意事项

最佳实践

  • 先探索后查询:先用 describe 模式了解数据结构,再生成 SQL
  • 复杂查询先抽样:对于复杂查询,先用 --sample_fraction 参数在小样本上验证
  • 合理使用 LIMIT:查询结果超过 1000 行时,建议使用 LIMIT 或聚合查询
  • 利用自动校正:SQL 错误时会自动重试和校正,无需手动干预

性能建议

  • 大数据集使用抽样验证后再执行完整查询
  • 聚合查询比全表查询更高效
  • 可以设置 --max_retries 参数调整重试次数

错误处理

  • 语法错误会自动修复(多余分号、逗号等)
  • 列名错误会尝试匹配最相似的列名(编辑距离≤2)
  • 表名错误会提示检查表名
  • 所有校正操作都会在输出中显示

使用示例

示例 1:完整数据探索

场景:拿到新数据集,需要了解数据结构和质量

命令

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode describe

输出包含

  • 基本信息:20 行,7 列
  • 表结构:各字段名称和数据类型
  • 数值列统计:price 的平均值 356.99,中位数 264.99 等
  • 分类列统计:category 有 2 个唯一值,Electronics 出现 12 次
  • 日期列统计:sale_date 从 2024-01-15 到 2024-02-02
  • 数据质量:所有列数据完整,无缺失值

示例 2:销售分析查询

场景:分析各类别产品的销售表现

命令

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT category, COUNT() as num_products, SUM(price  quantity) as total_revenue, AVG(price) as avg_price FROM data GROUP BY category ORDER BY total_revenue DESC"

输出

执行 SQL: SELECT category, COUNT() as num_products, SUM(price  quantity) as total_revenue, AVG(price) as avg_price FROM data GROUP BY category ORDER BY total_revenue DESC

【查询结果】 执行时间:0.05 秒 重试次数:0 结果行数:2

数据预览: category num_products total_revenue avg_price Electronics 12 42938.24 356.99 Furniture 8 19949.23 356.99

业务洞察

  • Electronics 类别贡献了 68% 的总收入
  • 两个类别的平均价格相同,但 Electronics 销量更高

示例 3:区域销售对比

场景:分析不同区域的销售情况

命令

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT region, COUNT() as num_orders, SUM(price  quantity) as total_sales, AVG(price) as avg_order_value FROM data GROUP BY region ORDER BY total_sales DESC"

示例 4:高价产品筛选(带抽样验证)

场景:找出高价产品(price > 200),先在 10% 样本上验证

命令

# 先在样本上验证
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT product_name, category, price FROM data WHERE price > 200" --sample_fraction 0.1

# 验证无误后执行完整查询 python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \ --sql "SELECT product_name, category, price FROM data WHERE price > 200 ORDER BY price DESC"

示例 5:自动 SQL 校正

场景:SQL 有语法错误(多余分号),系统自动校正

命令

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT  FROM data WHERE price > 100;"

输出

【SQL 校正记录】
✓ 语法校正:;\s$ ->

【查询结果】 执行时间:0.03 秒 重试次数:1 结果行数:15

示例 6:导出查询结果

场景:将查询结果保存为 CSV、Excel、JSON 或 Parquet 文件

CSV 导出

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT category, region, SUM(price  quantity) as sales FROM data GROUP BY category, region" \
  --output sales_summary.csv

Excel 导出

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT category, region, SUM(price  quantity) as sales FROM data GROUP BY category, region" \
  --output sales_summary.xlsx

JSON 导出

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT category, region, SUM(price  quantity) as sales FROM data GROUP BY category, region" \
  --output sales_summary.json

Parquet 导出

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT category, region, SUM(price  quantity) as sales FROM data GROUP BY category, region" \
  --output sales_summary.parquet

结果:根据文件扩展名自动选择导出格式,保存为相应文件

示例 7:时间序列分析

场景:分析销售趋势

命令

python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
  --sql "SELECT DATE_TRUNC('month', sale_date) as month, SUM(price * quantity) as monthly_sales FROM data GROUP BY month ORDER BY month"

故障排查

常见问题

Q1: 文件找不到?

错误:数据文件不存在:./data.csv

解决:检查文件路径是否正确,使用绝对路径试试

Q2: Excel 读取失败?

错误:无法注册数据表:...

解决:

  • 确认文件为 .xlsx.xls
  • 如工作表不在第一个,添加参数 --excel_sheet "工作表名"
  • 检查是否安装 openpyxl

Q3: SQL 执行失败?

系统会自动重试和校正 SQL,如果仍然失败,检查:

  • 列名是否正确(区分大小写)
  • SQL 语法是否正确
  • 表名是否使用了默认的 'data'

Q4: 内存不足?

解决:

  • 使用抽样查询:--sample_fraction 0.1
  • 添加 LIMIT 限制结果数量
  • 使用聚合查询而非全表查询

输出格式说明

Describe 模式输出

  • 基本信息:数据规模概览
  • 表结构:字段名和数据类型
  • 数值列统计:描述性统计指标
  • 分类列统计:分布和频率信息
  • 日期列统计:时间范围信息
  • 数据质量:缺失值统计
  • 数据样本:前 5 行数据预览

Query 模式输出

  • SQL 校正记录:如果有自动校正,会显示校正内容
  • 查询结果:执行时间、重试次数、结果行数
  • 数据预览:完整的查询结果表格

高级技巧

1. 链式分析

先用 describe 了解数据,再执行多个查询:

# 步骤 1:探索数据
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe

# 步骤 2:基于了解执行针对性查询 python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \ --sql "SELECT category, AVG(price) as avg_price FROM data GROUP BY category"

2. 性能优化

对于大数据集:

# 先用 1% 样本快速验证
python scripts/duckdb_analyzer.py --file_path ./large_data.csv --mode query \
  --sql "SELECT ..." --sample_fraction 0.01

# 验证通过后再执行完整查询 python scripts/duckdb_analyzer.py --file_path ./large_data.csv --mode query \ --sql "SELECT ..."

3. 数据质量检查

python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe | grep "缺失"

SQL 语法约束

  • 仅使用 DuckDB SQL 方言,不使用其他数据库的专有语法
  • 字段名支持英文和中文查询
  • 包含中文、空格、连字符、冒号等特殊字符的字段名,必须使用双引号
  • 当中文字段未加双引号时,查询引擎会自动校正并重试
  • 支持中文标点自动转换(如 ,;(),;()
  • 默认表名为 data
  • 生成 SQL 时优先保证可执行性,再进行性能优化

Pandas 使用边界

  • Pandas 仅用于读取文件与将 DataFrame 注册到 DuckDB
  • Pandas 可用于注册前的数据安全预处理(如 inf/-inf -> NULL
  • 不使用 Pandas 做业务聚合分析、统计计算或口径产出
  • 最终分析结果必须通过 DuckDB SQL 查询 data 表生成

字段名示例

SELECT "销售渠道", SUM("售后退款-仅退货金额") AS total_return FROM data GROUP BY "销售渠道" ORDER BY total_return DESC LIMIT 10
SELECT 销售渠道, SUM(售后退款-仅退货金额) AS total_return FROM data GROUP BY 销售渠道

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务