跳到主要内容

输出格式

可使用 .mode dot 命令改变终端输出中表格的展示方式。除外观自定义外,这些模式还有额外用途。 例如可将终端输出写入文件,以便在其他场景展示 Goose 输出。insert 模式会生成一组 SQL 语句,便于后续插入数据。 markdown 模式特别适合生成文档,latex 模式则适合撰写学术论文。

输出格式列表

模式说明
ascii使用 0x1F 与 0x1E 分隔列/行
box使用 Unicode 方框字符显示表格
csv逗号分隔值
column按列输出(见 .width
duckbox功能丰富的表格格式(默认)
htmlHTML <table> 代码
insert ⟨TABLE⟩⟨TABLE⟩ 生成 SQL insert 语句
json结果为 JSON 数组
jsonlines结果为 NDJSON
latexLaTeX tabular 环境代码
line每行一个值
list使用 `
markdownMarkdown 表格格式
quote以 SQL 方式转义输出
tableASCII 艺术风格表格
tabs制表符分隔值
tclTCL 列表元素
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 模式

默认情况下,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 │
└──────────────┘