⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
点命令

点命令在 DuckDB CLI 客户端中可用。要使用这些命令之一,请在行首紧跟一个句点 (.),然后是要执行的命令名称。命令的额外参数在命令后以空格分隔输入。如果参数必须包含空格,则可以使用单引号或双引号将其括起来。点命令必须在单行中输入,且句点前不能有任何空格。行尾不需要分号。要查看可用命令,请使用 .help 命令。

点命令列表

命令 描述
.bail on/off 遇到错误后停止。默认值:off
.binary on/off 打开或关闭二进制输出。默认值:off
.cd DIRECTORY 将工作目录更改为 DIRECTORY
.changes on/off 显示 SQL 更改的行数
.columns 查询结果的列式渲染
.constant COLOR 设置用于常量值的语法高亮颜色
.constantcode CODE 设置用于常量值的语法高亮终端代码
.databases 列出附加数据库的名称和文件
.echo on/off 打开或关闭命令回显
.exit CODE 以返回码 CODE 退出此程序
.headers on/off 打开或关闭标题显示。不适用于 duckbox 模式
.help -all PATTERN 显示 PATTERN 的帮助文本
.highlight on/off 在 shell 中切换语法高亮 on / off。有关详细信息,请参阅查询语法高亮部分
.highlight_colors COMPONENT COLOR 配置每个组件的颜色(仅限 duckbox)。有关详细信息,请参阅结果语法高亮部分
.highlight_results on/off 在结果表中切换高亮 on / off(仅限 duckbox)。有关详细信息,请参阅结果语法高亮部分
.import FILE TABLE 将数据从 FILE 导入到 TABLE
.indexes TABLE 显示索引名称
.keyword COLOR 设置用于关键字的语法高亮颜色
.keywordcode CODE 设置用于关键字的语法高亮终端代码
.large_number_rendering all/footer/off 切换大数字的可读渲染(仅限 duckbox,默认值:footer
.log FILE/off 打开或关闭日志记录。FILE 可以是 stderr / stdout
.maxrows COUNT 设置显示的最大行数。仅适用于duckbox 模式
.maxwidth COUNT 设置最大字符宽度。0 表示默认使用终端宽度。仅适用于duckbox 模式
.mode MODE TABLE 设置输出模式
.multiline 设置多行模式(默认)
.nullvalue STRING 使用 STRING 替换 NULL 值。默认值:NULL
.once OPTIONS FILE 仅将下一个 SQL 命令的输出发送到 FILE
.open OPTIONS FILE 关闭现有数据库并重新打开 FILE
.output FILE 将输出发送到 FILE,如果省略 FILE 则发送到 stdout
.print STRING... 打印字面量 STRING
.prompt MAIN CONTINUE 替换标准提示符
.quit 退出此程序
.read FILE FILE 读取输入
.rows 查询结果的行式渲染(默认)
.safe_mode 激活安全模式
.schema PATTERN 显示匹配 PATTERNCREATE 语句
.separator COL ROW 更改列和行分隔符
.shell CMD ARGS... 在系统 shell 中使用 ARGS... 运行 CMD
.show 显示各种设置的当前值
.singleline 设置单行模式
.system CMD ARGS... 在系统 shell 中使用 ARGS... 运行 CMD
.tables TABLE 列出匹配 LIKE 模式 TABLE 的表名
.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 支持用于将数据导出为 CSV 或 Parquet 的 SQL 语法,但如果需要,也可以使用 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 标志;对于 CSV 文件(在默认电子表格编辑器中打开),请使用 -x 标志。这对于更详细地检查查询结果很有用,尤其是当结果集相对较大时。.excel 命令等同于 .once -x

.once -e
SELECT 'quack' AS hello;

结果随后在系统的默认文本文件编辑器中打开,例如

cli_docs_output_to_text_editor

提示:macOS 用户可以使用 pbcopy 将结果复制到剪贴板,方法是使用 .once 通过管道输出到 pbcopy.once |pbcopy

将其与 .headers off.mode lines 选项结合使用可以特别有效。

查询数据库模式

所有 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);

语法高亮器

DuckDB CLI 客户端有一个用于 SQL 查询的语法高亮器,另一个用于 duckbox 格式的结果表。

配置查询语法高亮器

默认情况下,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⟩

例如

.constantcode 033[31m

配置用于高亮关键字的颜色

.keyword [red|green|yellow|blue|magenta|cyan|white|brightblack|brightred|brightgreen|brightyellow|brightblue|brightmagenta|brightcyan|brightwhite]
.keywordcode ⟨terminal_code⟩

例如

.keywordcode 033[31m

配置结果语法高亮器

默认情况下,结果高亮会进行一些小修改

  • 加粗列名
  • NULL 值被置灰
  • 布局元素被置灰

可以使用 .highlight_colors 命令自定义每个组件的高亮显示。例如

.highlight_colors layout red
.highlight_colors column_type yellow
.highlight_colors column_name yellow bold_underline
.highlight_colors numeric_value cyan underline
.highlight_colors temporal_value red bold
.highlight_colors string_value green bold
.highlight_colors footer gray

可以使用 .highlight_results off 禁用结果高亮。

快捷方式

DuckDB 的 CLI 允许使用点命令的快捷方式。一旦字符序列可以明确地补全为点命令或参数,CLI 就会(静默地)自动补全它们。例如

.mo ma

等同于

.mode markdown

提示:避免在 SQL 脚本中使用快捷方式,以提高可读性并确保脚本的未来兼容性。

从 CSV 导入数据

已废弃 此功能仅为兼容性目的而提供,未来可能会被移除。请使用 read_csv 函数或 COPY 语句来加载 CSV 文件。

DuckDB 支持直接查询或导入 CSV 文件的 SQL 语法,但如果需要,也可以使用 CLI 特定的命令来导入 CSV。.import 命令接受两个参数,并且还支持多个选项。第一个参数是 CSV 文件的路径,第二个是要创建的 DuckDB 表的名称。由于 DuckDB 对类型有比 SQLite(DuckDB CLI 基于此)更严格的要求,因此在使用 .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