⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
输出格式

可以使用 .mode 点命令 来改变终端输出中表的显示格式。除了自定义显示格式外,这些模式还具有额外的好处。通过将终端输出重定向到文件,这对于在其他地方展示 DuckDB 输出非常有用。使用 insert 模式将生成一系列 SQL 语句,这些语句可用于稍后插入数据。markdown 模式对于编写文档特别有用,而 latex 模式对于撰写学术论文很有用。

输出格式列表

模式 描述
ascii 列/行以 0x1F 和 0x1E 分隔
box 使用 Unicode 框线字符的表格
csv 逗号分隔值
column 按列输出 (参见 .width)
duckbox 功能丰富的表格(默认)
html HTML <table> 代码
insert TABLE TABLE 的 SQL 插入语句
json 结果以 JSON 数组形式呈现
jsonlines 结果以 NDJSON 形式呈现
latex LaTeX 表格环境代码
line 每行一个值
list 值以 | 分隔
markdown Markdown 表格格式
quote 将结果按 SQL 方式转义
table ASCII 艺术表格
tabs 制表符分隔值
tcl TCL 列表元素
trash 无输出

更改输出格式

使用普通的 .mode 点命令来查询当前使用的显示格式。

.mode
current output mode: duckbox

使用带参数的 .mode 点命令来设置输出格式。

.mode markdown
SELECT 'quacking intensifies' AS incoming_ducks;
|    incoming_ducks    |
|----------------------|
| quacking intensifies |

输出的显示格式也可以通过 .separator 命令进行调整。如果使用依赖分隔符的导出模式(例如 csvtabs),当模式更改时,分隔符将被重置。例如,.mode csv 会将分隔符设置为逗号 (,)。接着使用 .separator "|" 则会将输出转换为竖线分隔。

.mode csv
SELECT 1 AS col_1, 2 AS col_2
UNION ALL
SELECT 10 AS col1, 20 AS col_2;
col_1,col_2
1,2
10,20
.separator "|"
SELECT 1 AS col_1, 2 AS col_2
UNION ALL
SELECT 10 AS col1, 20 AS col_2;
col_1|col_2
1|2
10|20

duckbox 模式

默认情况下,DuckDB 以 duckbox 模式呈现查询结果,这是一种功能丰富的 ASCII 艺术风格输出格式。

duckbox 模式支持 large_number_rendering 选项,该选项允许以人类可读的方式渲染大数字。它有三个级别:

  • off – 所有数字都使用常规格式打印。
  • footer(默认)– 大数字会附加人类可读的格式。仅适用于单行结果。
  • all - 所有大数字都替换为人类可读的格式。

请参见以下示例

.large_number_rendering off
SELECT pi() * 1_000_000_000 AS x;
┌───────────────────┐
│         x         │
│      double       │
├───────────────────┤
│ 3141592653.589793 │
└───────────────────┘
.large_number_rendering footer
SELECT pi() * 1_000_000_000 AS x;
┌───────────────────┐
│         x         │
│      double       │
├───────────────────┤
│ 3141592653.589793 │
│  (3.14 billion)   │
└───────────────────┘
.large_number_rendering all
SELECT pi() * 1_000_000_000 AS x;
┌──────────────┐
│      x       │
│    double    │
├──────────────┤
│ 3.14 billion │
└──────────────┘