DuckDB CLI 专家,专注于 SQL 分析、数据处理和文件转换。适用于 SQL 查询、CSV/Parquet/JSON 分析、数据库查询或数据转换。触发词:duckdb、sql、query、data analysis、parquet、convert data。
DuckDB CLI 专家是一项面向实际任务的技能,主要用于帮助数据分析, SQL 查询和通过 DuckDB CLI 文件转换.;XQQS快速启动.;
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
协助通过 DuckDB CLI 进行数据分析、SQL 查询及文件格式转换。
# CSV
duckdb -c "SELECT * FROM 'data.csv' LIMIT 10"
# Parquet
duckdb -c "SELECT * FROM 'data.parquet'"
# 使用通配符读取多个文件
duckdb -c "SELECT * FROM read_parquet('logs/*.parquet')"
# JSON
duckdb -c "SELECT * FROM read_json_auto('data.json')"
# 创建或打开数据库
duckdb my_database.duckdb
# 只读模式打开
duckdb -readonly existing.duckdb
| 标志 | 格式 |
|---|---|
-csv |
逗号分隔 |
-json |
JSON 数组 |
-table |
ASCII 表格 |
-markdown |
Markdown 表格 |
-html |
HTML 表格 |
-line |
每行一个值 |
| 参数 | 说明 |
|---|---|
-c COMMAND |
执行 SQL 并退出 |
-f FILENAME |
从文件运行脚本 |
-init FILE |
指定替代 ~/.duckdbrc 的初始化文件 |
-readonly |
以只读模式打开 |
-echo |
执行前显示命令 |
-bail |
遇到首个错误即停止 |
-header / -noheader |
显示/隐藏列标题 |
-nullvalue TEXT |
NULL 值的显示文本 |
-separator SEP |
列分隔符 |
duckdb -c "COPY (SELECT * FROM 'input.csv') TO 'output.parquet' (FORMAT PARQUET)"
duckdb -c "COPY (SELECT * FROM 'input.parquet') TO 'output.csv' (HEADER, DELIMITER ',')"
duckdb -c "COPY (SELECT * FROM read_json_auto('input.json')) TO 'output.parquet' (FORMAT PARQUET)"
duckdb -c "COPY (SELECT * FROM 'data.csv' WHERE amount > 1000) TO 'filtered.parquet' (FORMAT PARQUET)"
| 命令 | 说明 |
|---|---|
.tables [pattern] |
列出表名(支持 LIKE 模式匹配) |
.schema [table] |
显示建表语句(CREATE 语句) |
.databases |
显示已附加的数据库 |
| 命令 | 说明 |
|---|---|
.mode FORMAT |
更改输出格式 |
.output file |
将输出重定向至文件 |
.once file |
将下一次输出写入文件 |
.headers on/off |
显示/隐藏列标题 |
.separator COL ROW |
设置列分隔符与行分隔符 |
| 命令 | 说明 |
|---|---|
.timer on/off |
显示查询执行时间 |
.echo on/off |
执行前显示命令 |
.bail on/off |
出错时停止执行 |
.read file.sql |
从文件运行 SQL 脚本 |
| 命令 | 说明 |
|---|---|
.edit 或 e |
在外部编辑器中打开当前查询 |
.help [pattern] |
显示帮助信息(可选模式匹配) |
| 快捷键 | 操作 |
|---|---|
Home / End |
跳转到行首 / 行尾 |
Ctrl+Left/Right |
按词跳转 |
Ctrl+A / Ctrl+E |
跳转到缓冲区开头 / 结尾 |
| 快捷键 | 操作 |
|---|---|
Ctrl+P / Ctrl+N |
上一条 / 下一条命令 |
Ctrl+R |
反向搜索命令历史 |
Alt+< / Alt+> |
跳转到历史记录第一条 / 最后一条 |
| 快捷键 | 操作 |
|---|---|
Ctrl+W |
向前删除一个词 |
Alt+D |
向后删除一个词 |
Alt+U / Alt+L |
将当前词转为大写 / 小写 |
Ctrl+K |
删除光标至行尾的内容 |
| 快捷键 | 操作 |
|---|---|
Tab |
触发自动补全或选择下一个建议项 |
Shift+Tab |
选择上一个建议项 |
Esc+Esc |
撤销自动补全 |
按 Tab 键激活上下文感知的自动补全功能:
CREATE TABLE sales AS SELECT * FROM 'sales_2024.csv';
INSERT INTO sales SELECT * FROM 'sales_2025.csv';
COPY sales TO 'backup.parquet' (FORMAT PARQUET);
SELECT
COUNT(*) as count,
AVG(amount) as average,
SUM(amount) as total
FROM 'transactions.csv';
SELECT
category,
COUNT(*) as count,
SUM(amount) as total
FROM 'data.csv'
GROUP BY category
ORDER BY total DESC;
SELECT a.*, b.name
FROM 'orders.csv' a
JOIN 'customers.parquet' b ON a.customer_id = b.id;
DESCRIBE SELECT * FROM 'data.csv';
# 从标准输入读取
cat data.csv | duckdb -c "SELECT * FROM read_csv('/dev/stdin')"
# 管道传递给其他命令
duckdb -csv -c "SELECT * FROM 'data.parquet'" | head -20
# 写入标准输出
duckdb -c "COPY (SELECT * FROM 'data.csv') TO '/dev/stdout' (FORMAT CSV)"
将常用设置保存在 ~/.duckdbrc 中:
.timer on
.mode duckbox
.maxrows 50
.highlight on
.keyword green
.constant yellow
.comment brightblack
.error red
在本地编辑器中打开复杂查询:
.edit
编辑器按如下优先级选取:DUCKDB_EDITOR → EDITOR → VISUAL → vi
启用后限制文件访问权限的安全模式。启用时:
.read、.output、.import、.sh 等命令LIMIT 快速预览结果read_csv_auto 与 read_json_auto 可自动推断列类型memory_limit 值相关专题
热门下载
相关下载
精品课程
共6课时 | 54.6万人学习
共89课时 | 133.1万人学习
共49课时 | 82.1万人学习