点命令在 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 |
显示匹配 PATTERN 的 CREATE 语句 |
.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;
结果随后在系统的默认文本文件编辑器中打开,例如
提示: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