点命令在DuckDB CLI客户端中可用。要使用这些命令之一,请在行首输入一个句点(.),紧接着输入您希望执行的命令名称。命令的附加参数在命令后以空格分隔输入。如果参数必须包含空格,可以使用单引号或双引号包裹该参数。点命令必须在一行内输入,句点前不能有空格。行末不需要分号。要查看可用命令,请使用.help命令。
点命令
| 命令 | 描述 |
|---|---|
.bail on|off |
遇到错误后停止。默认值:off |
.binary on|off |
开启或关闭二进制输出。默认值:off |
.cd DIRECTORY |
将工作目录更改为 DIRECTORY |
.changes on|off |
显示SQL更改的行数 |
.check GLOB |
如果自 .testcase 以来的输出不匹配,则失败 |
.columns |
查询结果的列式渲染 |
.constant ?COLOR? |
设置用于常量值的语法高亮颜色 |
.constantcode ?CODE? |
设置用于常量值的语法高亮终端代码 |
.databases |
列出附加数据库的名称和文件 |
.echo on|off |
打开或关闭命令回显 |
.excel |
在电子表格中显示下一个命令的输出 |
.exit ?CODE? |
使用返回码 CODE 退出此程序 |
.explain ?on|off|auto? |
更改 EXPLAIN 格式化模式。默认值:auto |
.fullschema ?--indent? |
显示模式和sqlite_stat表的内容 |
.headers on|off |
开启或关闭标题显示 |
.help ?-all? ?PATTERN? |
显示 PATTERN 的帮助文本 |
.highlight [on|off] |
在 shell 中切换语法高亮 on/off |
.import FILE TABLE |
从FILE导入数据到TABLE |
.indexes ?TABLE? |
显示索引的名称 |
.keyword ?COLOR? |
设置用于关键字的语法高亮颜色 |
.keywordcode ?CODE? |
设置用于关键字的语法高亮终端代码 |
.lint OPTIONS |
报告潜在的模式问题。 |
.log FILE|off |
开启或关闭日志记录。FILE 可以是 stderr/stdout |
.maxrows COUNT |
设置显示的最大行数。仅适用于 duckbox 模式 |
.maxwidth COUNT |
设置最大宽度(以字符为单位)。0 默认为终端宽度。仅适用于 duckbox 模式 |
.mode MODE ?TABLE? |
设置 输出模式 |
.multiline |
设置多行模式(默认) |
.nullvalue STRING |
使用 STRING 代替 NULL 值 |
.once ?OPTIONS? ?FILE? |
仅将下一个SQL命令的输出发送到FILE |
.open ?OPTIONS? ?FILE? |
关闭现有数据库并重新打开 FILE |
.output ?FILE? |
将输出发送到 FILE 或 stdout(如果省略 FILE) |
.parameter CMD ... |
管理SQL参数绑定 |
.print STRING... |
打印字面量 STRING |
.prompt MAIN CONTINUE |
替换标准提示 |
.quit |
退出此程序 |
.read FILE |
从FILE读取输入 |
.rows |
查询结果的逐行渲染(默认) |
.schema ?PATTERN? |
显示与PATTERN匹配的CREATE语句 |
.separator COL ?ROW? |
更改列和行的分隔符 |
.sha3sum ... |
计算数据库内容的SHA3哈希值 |
.shell CMD ARGS... |
在系统 shell 中运行 CMD ARGS... |
.show |
显示各种设置的当前值 |
.singleline |
设置单行模式 |
.system CMD ARGS... |
在系统 shell 中运行 CMD ARGS... |
.tables ?TABLE? |
列出与LIKE模式匹配的表名 TABLE |
.testcase NAME |
开始将输出重定向到 NAME |
.timer on|off |
打开或关闭SQL计时器。由;分隔但不通过换行分隔的SQL语句将一起测量。 |
.width NUM1 NUM2 ... |
设置列输出的最小列宽 |
使用 .help 命令
.help 文本可以通过传入一个文本字符串作为第二个参数来过滤。
.help m
.maxrows COUNT Sets the maximum number of rows for display (default: 40). Only for duckbox mode.
.maxwidth COUNT Sets the maximum width in characters. 0 defaults to terminal width. Only for duckbox mode.
.mode MODE ?TABLE? Set output mode
.output: 将结果写入文件
默认情况下,DuckDB CLI 将结果发送到终端的标准输出。但是,可以使用 .output 或 .once 命令来修改此行为。将所需的输出文件位置作为参数传递。.once 命令只会输出下一组结果,然后恢复到标准输出,但 .output 会将所有后续输出重定向到该文件位置。请注意,每个结果都会覆盖目标位置的整个文件。要恢复到标准输出,请输入不带文件参数的 .output。
在这个例子中,输出格式被更改为markdown,目标被识别为一个Markdown文件,然后DuckDB将SQL语句的输出写入该文件。然后使用不带参数的.output将输出恢复为标准输出。
.mode markdown
.output my_results.md
SELECT 'taking flight' AS output_column;
.output
SELECT 'back to the terminal' AS displayed_column;
文件 my_results.md 将包含:
| output_column |
|---------------|
| taking flight |
终端将显示:
| displayed_column |
|----------------------|
| back to the terminal |
常见的输出格式是CSV,即逗号分隔值。DuckDB支持SQL语法将数据导出为CSV或Parquet,但如果需要,也可以使用CLI特定的命令来写入CSV。
.mode csv
.once my_output_file.csv
SELECT 1 AS col_1, 2 AS col_2
UNION ALL
SELECT 10 AS col1, 20 AS col_2;
文件 my_output_file.csv 将包含:
col_1,col_2
1,2
10,20
通过向.once命令传递特殊选项(标志),查询结果也可以发送到临时文件并自动在用户的默认程序中打开。使用-e标志生成文本文件(在默认文本编辑器中打开),或使用-x标志生成CSV文件(在默认电子表格编辑器中打开)。这对于更详细地检查查询结果非常有用,特别是在结果集相对较大的情况下。.excel命令等同于.once -x。
.once -e
SELECT 'quack' AS hello;
结果随后在系统的默认文本文件编辑器中打开,例如:

查询数据库模式
所有DuckDB客户端都支持使用SQL查询数据库模式,但CLI有额外的点命令,可以使理解数据库内容变得更加容易。
.tables命令将返回数据库中的表列表。它有一个可选参数,可以根据LIKE模式过滤结果。
CREATE TABLE swimmers AS SELECT 'duck' AS animal;
CREATE TABLE fliers AS SELECT 'duck' AS animal;
CREATE TABLE walkers AS SELECT 'duck' AS animal;
.tables
fliers swimmers walkers
例如,要过滤仅包含l的表,请使用LIKE模式%l%。
.tables %l%
fliers walkers
.schema 命令将显示用于定义数据库模式的所有SQL语句。
.schema
CREATE TABLE fliers (animal VARCHAR);
CREATE TABLE swimmers (animal VARCHAR);
CREATE TABLE walkers (animal VARCHAR);
配置语法高亮器
默认情况下,shell 支持语法高亮显示。 可以使用以下命令配置 CLI 的语法高亮器。
关闭高亮显示:
.highlight off
打开高亮显示:
.highlight on
配置用于突出显示常量的颜色:
.constant [red|green|yellow|blue|magenta|cyan|white|brightblack|brightred|brightgreen|brightyellow|brightblue|brightmagenta|brightcyan|brightwhite]
.constantcode [terminal_code]
配置用于突出显示关键字的颜色:
.keyword [red|green|yellow|blue|magenta|cyan|white|brightblack|brightred|brightgreen|brightyellow|brightblue|brightmagenta|brightcyan|brightwhite]
.keywordcode [terminal_code]
从CSV导入数据
已弃用 此功能仅出于兼容性原因包含在内,未来可能会被移除。 使用
read_csv函数或COPY语句 来加载 CSV 文件。
DuckDB 支持 SQL 语法直接查询或导入 CSV 文件,但如果需要,也可以使用 CLI 特定的命令来导入 CSV。.import 命令接受两个参数,并且还支持多个选项。第一个参数是 CSV 文件的路径,第二个是要创建的 DuckDB 表的名称。由于 DuckDB 需要比 SQLite(DuckDB CLI 基于 SQLite)更严格的类型,因此在使用 .import 命令之前必须创建目标表。要自动检测模式并从 CSV 创建表,请参阅 导入文档中的 read_csv 示例。
在这个例子中,通过切换到CSV模式并设置输出文件位置来生成CSV文件:
.mode csv
.output import_example.csv
SELECT 1 AS col_1, 2 AS col_2 UNION ALL SELECT 10 AS col1, 20 AS col_2;
现在CSV文件已经写入,可以使用所需的模式创建表并导入CSV。输出被重置到终端,以避免继续编辑上面指定的输出文件。--skip N选项用于忽略数据的第一行,因为它是标题行,并且表已经用正确的列名创建。
.mode csv
.output
CREATE TABLE test_table (col_1 INTEGER, col_2 INTEGER);
.import import_example.csv test_table --skip 1
请注意,.import 命令在识别要导入的数据结构时,会使用当前的 .mode 和 .separator 设置。可以使用 --csv 选项来覆盖该行为。
.import import_example.csv test_table --skip 1 --csv