网淘吧来吧,欢迎您!

DuckDB CLI skills技能使用说明

2026-03-28 新闻来源:网淘吧 围观:18
电脑广告
手机广告

DuckDB CLI 专家

通过 DuckDB CLI 帮助进行数据分析、SQL 查询和文件转换。

快速开始

直接用 SQL 读取数据文件

# CSV
duckdb -c "SELECT * FROM 'data.csv' LIMIT 10"

# Parquet
duckdb -c "SELECT * FROM 'data.parquet'"

# Multiple files with glob
duckdb -c "SELECT * FROM read_parquet('logs/*.parquet')"

# JSON
duckdb -c "SELECT * FROM read_json_auto('data.json')"

打开持久化数据库

# Create/open database
duckdb my_database.duckdb

# Read-only mode
duckdb -readonly existing.duckdb

命令行参数

输出格式(作为标志)

标志格式
-csv逗号分隔
-jsonJSON 数组
-tableASCII 表格
-markdownMarkdown 表格
-htmlHTML 表格
-line每行一个值

执行参数

参数描述
-c 命令执行SQL并退出
-f 文件名从文件运行脚本
-init 文件使用替代 ~/.duckdbrc 的配置文件
-readonly以只读模式打开
-echo执行前显示命令
-bail遇到第一个错误时停止
-header/-noheader显示/隐藏列标题
-nullvalue 文本NULL值的显示文本
-separator 分隔符列分隔符

数据转换

CSV 转 Parquet

duckdb -c "COPY (SELECT * FROM 'input.csv') TO 'output.parquet' (FORMAT PARQUET)"

Parquet 转 CSV

duckdb -c "COPY (SELECT * FROM 'input.parquet') TO 'output.csv' (HEADER, DELIMITER ',')"

JSON 转 Parquet

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 [模式]显示表(可使用LIKE模式匹配)
.schema [表名]显示创建语句
.databases显示已附加的数据库

输出控制

命令描述
.mode 格式更改输出格式
.output 文件将输出发送到文件
.once 文件下一次输出到文件
.headers 开/关显示/隐藏列标题
.separator 列分隔符 行分隔符设置分隔符

查询

命令描述
.timer 开/关显示执行时间
.echo 开/关在执行前显示命令
.bail 开/关出错时停止
.read 文件.sql从文件运行 SQL

编辑

命令描述
.edit\e在外部编辑器中打开查询
.help [模式]显示帮助

输出格式(18种可用)

数据导出

  • csv- 逗号分隔,适用于电子表格
  • tabs- 制表符分隔
  • json- JSON 数组
  • jsonlines- 换行符分隔的JSON(流式)

可读格式

  • duckbox(默认)- 使用Unicode制表符绘制的美观ASCII格式
  • table- 简单的ASCII表格
  • markdown- 用于文档编写
  • html- HTML表格
  • latex- 用于学术论文

专用格式

  • insert TABLE- SQL INSERT语句
  • column- 宽度可调的列
  • line- 每行一个值
  • list- 竖线分隔
  • trash- 丢弃输出

键盘快捷键(macOS/Linux)

导航

快捷键操作
Home键/End键行首/行尾
Ctrl+左箭头/右箭头跳转单词
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键:

  • 关键词- SQL命令
  • 表名- 数据库对象
  • 列名- 字段与函数
  • 文件名- 路径补全

数据库操作

从文件创建表

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';

管道与标准输入

# Read from stdin
cat data.csv | duckdb -c "SELECT * FROM read_csv('/dev/stdin')"

# Pipe to another command
duckdb -csv -c "SELECT * FROM 'data.parquet'" | head -20

# Write to stdout
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编辑器可视化vi

安全模式

一种限制文件访问的安全模式。启用时:

  • 无外部文件访问
  • 禁用.read.output.import.sh等命令。
  • 无法在同一会话中禁用

提示

  • 使用LIMIT对大型文件进行快速预览
  • 对于重复查询,Parquet 格式比 CSV 更快
  • read_csv_auto自动读取JSON猜测列类型
  • 参数按顺序处理(类似于SQLite CLI)
  • WSL2在某些Ubuntu版本上可能显示不正确的内存限制数值
免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第345666名访客 今日有102篇新文章/评论