ducklocal schema ./data/发现关系
在写 SQL 之前,列出文件、表、视图及其列。
为 Claude Code、Codex、Cursor 等编程智能体提供无界面的 DuckDB 工作流,查询 CSV、Parquet、JSON 和 DuckDB 数据。无需自动操作图形界面,无需数据库服务器,也无需自定义 API。
CLI 默认输出 JSON,并对参数、SQL 和 I/O 错误使用明确的退出码。
官方工作流让智能体不去猜列名,也不会把一部分预览当成完整的数据集。
运行 ducklocal schema ./data/,得到关系、可直接使用的 FROM 表达式、列和类型。目录很大时,会返回概要和进一步深入的提示。
用一条 SQL 语句和较小的 --limit 查看有代表性的行。检查命令的退出状态和 JSON 中的 truncated 字段。
过滤、连接和聚合都在 DuckDB 中完成,而不是在智能体上下文里对截断的预览求和。只返回答案需要的证据。
每次调用都会创建独立的 DuckDB 连接,校验输入恰好是一条语句,并把机器可读的结果写到 stdout。出错时以 JSON 写到 stderr,并返回非零退出码。
$ ducklocal query --sql \ "SELECT channel, round(sum(revenue), 2) AS revenue FROM 'sales.csv' GROUP BY channel ORDER BY revenue DESC" {"columns":[...], "rows":[["Mobile app",290549.76],...], "row_count":4, "truncated":false, "elapsed_ms":14}
ducklocal schema ./data/在写 SQL 之前,列出文件、表、视图及其列。
ducklocal schema sales.csv --stats获得准确的空值数、不同值数、取值范围、中位数和日期覆盖范围。
ducklocal query --sql "…"默认得到带类型的 JSON,加 --format md 则输出 Markdown 表格。
ducklocal open --title "…" --run --sql "…"当结果需要人来审阅或进一步探索时,在桌面应用中打开这条查询。
默认最多返回 1,000 行,另有 2,000,000 个单元格的上限。DuckLocal 会多读一行来判断响应是否被截断,并通过 truncated 字段告知。
GROUP BY、ORDER BY 和聚合这类查询,仍然会在完整输入上计算,然后才返回有边界的结果。
row_count、truncated 和 elapsed_ms开源的 DuckLocal 技能教智能体先看表结构、预览有边界的样本、在 SQL 中聚合、核对是否截断,并根据返回的数值作答。可以在应用里为 Claude Code 一键安装,也可以把同样的说明复制给其他编程智能体。
DuckLocal 不会把本地文件上传到任何 DuckLocal 服务,但它也不假装任意 SQL 都无害。只读数据库模式并不是文件系统或网络沙箱:COPY、安装扩展或显式的外部访问等 SQL 都可能产生副作用。
--read-writeducklocal --help更想要可视化的工作流?了解桌面应用中的本地数据分析 →
ducklocal schema 找出关系和列,再用 ducklocal query 执行一条 SQL。命令默认返回结构化 JSON,不会打开桌面窗口,也不会启动服务器。ducklocal query 只接受一条 SQL 语句。多语句脚本会被直接拒绝,而不是部分执行,这让每一次工具调用都更容易检查。