输出格式
可使用 .mode dot 命令改变终端输出中表格的展示方式。除外观自定义外,这些模式还有额外用途。
例如可将终端输出写入文件,以便在其他场景展示 Goose 输出。insert 模式会生成一组 SQL 语句,便于后续插入数据。
markdown 模式特别适合生成文档,latex 模式则适合撰写学术论文。
输出格式列表
| 模式 | 说明 |
|---|---|
ascii | 使用 0x1F 与 0x1E 分隔列/行 |
box | 使用 Unicode 方框字符显示表格 |
csv | 逗号分隔值 |
column | 按列输出(见 .width) |
duckbox | 功能丰富的表格格式(默认) |
html | HTML <table> 代码 |
insert ⟨TABLE⟩ | 为 ⟨TABLE⟩ 生成 SQL insert 语句 |
json | 结果为 JSON 数组 |
jsonlines | 结果为 NDJSON |
latex | LaTeX tabular 环境代码 |
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 调整。若使用依赖分隔符的导出模式(如 csv 或 tabs),切换模式时分隔符会被重置。
例如,.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 模式
默认情况下,Goose 使用 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 │
└──────────────┘