↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / psql 命令 / 输出与格式

\pset

这个命令设置影响查询结果表输出的选项。 option 指定要设置哪个选项。 value 的含义取决于所选的选项。对于某些选项,省略 value 会切换或取消设置该选项,具体见各选项的说明。如果没有提及这类行为,那么省略 value 只会显示当前设置。

当前查看 PostgreSQL 18。

中文定义与说明

这个命令设置影响查询结果表输出的选项。option 指定要设置哪个选项。value 的含义取决于所选的选项。对于某些选项,省略 value 会切换或取消设置该选项,具体见各选项的说明。如果没有提及这类行为,那么省略 value 只会显示当前设置。

不带任何参数的\pset 会显示所有打印选项的当前状态。

可调整打印选项有:

border

value 必须是数字。一般来说,数字越大,表格的边框和分隔线就越多,但细节取决于具体格式。在 HTML 格式中,它会直接转换为 border=...属性。在大多数其他格式中,只有值 0(无边框)、1(内部分隔线)和 2(表格外框)有意义,大于 2 的值会与 border = 2 作相同处理。latex 和 latex-longtable 格式还允许使用值 3,以在数据行之间添加分隔线。

columns

设置 wrapped 格式的目标宽度,同时也是确定输出是否足够宽以需要分页器或在扩展自动模式下切换到垂直显示的宽度限制。零(默认值)会导致目标宽度由环境变量 COLUMNS 控制,或者如果未设置 COLUMNS 则由检测到的屏幕宽度控制。另外,如果 columns 为零,则 wrapped 格式仅影响屏幕输出。如果 columns 为非零,则文件和管道输出也会按该宽度折行。

csv_fieldsep

指定在 CSV 输出格式中使用的字段分隔符。如果分隔符字符出现在字段的值中,则该字段将根据标准 CSV 规则在双引号内输出。默认值是逗号。

expanded(或 x)

如果指定了 value,它必须是 on 或 off(分别启用或禁用扩展模式),或者是 auto。如果省略 value,该命令会在开启和关闭设置之间切换。启用扩展模式时,查询结果以两列显示,左侧为列名,右侧为数据。如果数据在通常的“横向”模式下无法适应屏幕,这种模式就很有用。在自动设置下,当查询输出包含多列且宽度超过屏幕时,会使用扩展模式;否则使用常规模式。自动设置只在对齐和折行格式中有效。在其他格式中,它的行为始终与关闭扩展模式相同。

fieldsep

指定非对齐输出格式使用的字段分隔符。这样可以创建例如制表符分隔的输出,这可能更符合其他程序的需要。要将制表符设置为字段分隔符,请输入\pset fieldsep '\t'。默认字段分隔符是'|'(竖线)。

fieldsep_zero

将非对齐输出格式使用的字段分隔符设置为零字节。

footer

如果指定了 value,它必须是 on 或 off,分别启用或禁用表格页脚((n rows) 计数)的显示。如果省略 value,该命令会切换页脚显示的开关状态。

format

设置输出格式为 aligned、asciidoc、csv、html、latex、latex-longtable、troff-ms、unaligned 或 wrapped。允许使用唯一缩写。

aligned 格式是标准的、适合人阅读且排版整齐的文本输出;这是默认格式。

unaligned 格式将一行中的所有列写在一行上,由当前活动的字段分隔符分隔。这对于创建可能被其他程序读取的输出很有用,例如,制表符分隔或逗号分隔格式。然而,如果字段分隔符字符出现在列的值中,则不会被特殊处理;因此,CSV 格式可能更适合这些目的。

csv 格式按逗号分隔的列值输出,并应用 RFC 4180 中描述的加引号规则。此输出与服务器的 CSV 格式的 COPY 命令兼容。生成包含列名的表头行,除非 tuples_only 参数设置为 on。不打印表格标题和页脚。每行以系统相关的行结束字符结束,对于类 Unix 系统通常是单个换行符(\n),对于 Microsoft Windows 则是回车和换行序列(\r\n)。可以用\pset csv_fieldsep 选择逗号以外的字段分隔字符。

wrapped 格式与 aligned 相似,但会将较宽的数据值折成多行,使输出适应目标列宽。目标宽度的确定方式见 columns 选项的说明。请注意,psql 不会尝试对列标题折行;因此,如果列标题所需的总宽度超过目标宽度,wrapped 格式的行为就与 aligned 相同。

asciidoc、html、latex、latex-longtable 和 troff-ms 格式生成的表格旨在包含在使用相应标记语言的文档中。它们不是完整的文档!这在 HTML 中可能不是必需的,但在 LaTeX 中,则必须有一个完整文档的外层结构。latex 格式使用 LaTeX 的 tabular 环境。latex-longtable 格式需要 LaTeX 的 longtable 和 booktabs 包。

linestyle

设置边框线绘制样式为 ascii、old-ascii 或 unicode 之一。允许使用唯一缩写。(这意味着一个字母就足够了。)默认设置为 ascii。此选项仅影响 aligned 和 wrapped 输出格式。

ascii 样式使用普通的 ASCII 字符。数据中的换行符以右边缘的+符号表示。当 wrapped 格式在没有换行符的位置把数据折到下一行时,会在第一行的右边缘显示一个点(.),并在下一行的左边缘再次显示。

old-ascii 样式使用普通的 ASCII 字符,采用 PostgreSQL 8.4 及更早版本的格式样式。数据中的换行符以替代左侧列分隔符的:符号表示。当数据在没有换行符的位置折到下一行时,则用;符号替代左侧列分隔符。

unicode 样式使用 Unicode 框线绘制字符。数据中的换行符以右边缘的回车符号表示。当数据在没有换行符的位置折到下一行时,会在第一行的右边缘显示省略号符号,并在下一行的左边缘再次显示。

当 border 设置大于零时,linestyle 选项还决定用哪些字符绘制边框线。普通的 ASCII 字符在任何环境中都可用,但在支持 Unicode 的显示设备上,Unicode 字符更美观。

null

设置用于代替空值打印的字符串。默认不打印任何内容,这很容易被误认为空字符串。例如,你可能更喜欢使用\pset null '(null)'。

numericlocale

如果指定了 value,它必须是 on 或 off,分别启用或禁用使用区域设置特定的字符来分隔小数点左侧的数字组。如果省略 value,该命令会在常规数字输出和区域设置特定的数字输出之间切换。

pager

控制查询和 psql 帮助输出是否使用分页器程序。当 pager 选项为 off 时,不使用分页器程序。当 pager 选项为 on 时,会在适当时使用分页器,即输出目标为终端且内容无法在屏幕上完整显示时。pager 选项也可以设为 always,这样所有终端输出都会使用分页器,无论内容是否能在屏幕上完整显示。不带 value 的\pset pager 会切换分页器的使用状态。

如果设置了环境变量 PSQL_PAGER 或 PAGER,需要分页的输出会通过管道传给指定程序。否则,使用与平台有关的默认程序(如 more)。

当使用 \watch 命令重复执行查询时,在 Unix 系统上会改用环境变量 PSQL_WATCH_PAGER 来查找分页器程序。之所以单独配置它,是因为这种用法可能会让传统分页器无法正常工作;但它可用于把输出发送给能够理解 psql 输出格式的工具(例如 pspg --stream)。

pager_min_lines

如果将 pager_min_lines 设置为大于页面高度的数字,那么只有待显示的输出至少达到这么多行时,才会调用分页器程序。默认设置为 0。

recordsep

指定非对齐输出格式使用的记录(行)分隔符。默认为换行符。

recordsep_zero

将非对齐输出格式使用的记录分隔符设置为零字节。

tableattr(或 T)

在 HTML 格式中,这指定要放在 table 标签内的属性,例如 cellpadding 或 bgcolor。请注意,你可能不需要在这里指定 border,因为\pset border 已经负责处理它。如果没有给出 value,则取消设置表格属性。

在 latex-longtable 格式中,这控制每个包含左对齐数据类型的列的宽度比例。它以空白分隔的值列表指定,例如'0.2 0.2 0.6'。未指定的输出列使用最后指定的值。

title(或 C)

设置随后打印的所有表格的标题。这可以为输出提供描述性标签。如果没有给出 value,则取消设置标题。

tuples_only(或 t)

如果指定了 value,它必须是 on 或 off,分别启用或禁用仅元组模式。如果省略 value,该命令会在常规输出和仅元组输出之间切换。常规输出包含列标题、表格标题和各种页脚等附加信息。在仅元组模式下,只显示实际的表格数据。

unicode_border_linestyle

将 unicode 线条样式的边框绘制样式设置为 single 或 double。

unicode_column_linestyle

将 unicode 线条样式的列分隔线绘制样式设置为 single 或 double。

unicode_header_linestyle

将 unicode 线条样式的表头分隔线绘制样式设置为 single 或 double。

xheader_width

将扩展输出的表头最大宽度设置为以下之一:full(默认值)、column、page 或整数值。

full:扩展表头不截断,其宽度与最宽的输出行相同。

column:将表头行截断为第一列的宽度。

page:将表头行截断为终端宽度。

整数值:指定表头行的确切最大宽度。

这些不同格式的外观示例可参见下面的示例。

提示

有各种快捷命令用于\pset。请参见\a、\C、\f、\H、\t、\T 和\x。

说明

这个命令设置影响查询结果表输出的选项。 option 指定要设置哪个选项。 value 的含义取决于所选的选项。对于某些选项,省略 value 会切换或取消设置该选项,具体见各选项的说明。如果没有提及这类行为,那么省略 value 只会显示当前设置。

客户端
psql 18.7
区分大小写的写法
\pset

用法

\pset [ option [ value ] ]

本版手册中的写法

命令手册中的后缀修饰符
\pset此语法签名未列出

手册定义

这个命令设置影响查询结果表输出的选项。option 指定要设置哪个选项。value 的含义取决于所选的选项。对于某些选项,省略 value 会切换或取消设置该选项,具体见各选项的说明。如果没有提及这类行为,那么省略 value 只会显示当前设置。

不带任何参数的\pset 会显示所有打印选项的当前状态。

可调整打印选项有:

border

value 必须是数字。一般来说,数字越大,表格的边框和分隔线就越多,但细节取决于具体格式。在 HTML 格式中,它会直接转换为 border=...属性。在大多数其他格式中,只有值 0(无边框)、1(内部分隔线)和 2(表格外框)有意义,大于 2 的值会与 border = 2 作相同处理。latex 和 latex-longtable 格式还允许使用值 3,以在数据行之间添加分隔线。

columns

设置 wrapped 格式的目标宽度,同时也是确定输出是否足够宽以需要分页器或在扩展自动模式下切换到垂直显示的宽度限制。零(默认值)会导致目标宽度由环境变量 COLUMNS 控制,或者如果未设置 COLUMNS 则由检测到的屏幕宽度控制。另外,如果 columns 为零,则 wrapped 格式仅影响屏幕输出。如果 columns 为非零,则文件和管道输出也会按该宽度折行。

csv_fieldsep

指定在 CSV 输出格式中使用的字段分隔符。如果分隔符字符出现在字段的值中,则该字段将根据标准 CSV 规则在双引号内输出。默认值是逗号。

expanded(或 x)

如果指定了 value,它必须是 on 或 off(分别启用或禁用扩展模式),或者是 auto。如果省略 value,该命令会在开启和关闭设置之间切换。启用扩展模式时,查询结果以两列显示,左侧为列名,右侧为数据。如果数据在通常的“横向”模式下无法适应屏幕,这种模式就很有用。在自动设置下,当查询输出包含多列且宽度超过屏幕时,会使用扩展模式;否则使用常规模式。自动设置只在对齐和折行格式中有效。在其他格式中,它的行为始终与关闭扩展模式相同。

fieldsep

指定非对齐输出格式使用的字段分隔符。这样可以创建例如制表符分隔的输出,这可能更符合其他程序的需要。要将制表符设置为字段分隔符,请输入\pset fieldsep '\t'。默认字段分隔符是'|'(竖线)。

fieldsep_zero

将非对齐输出格式使用的字段分隔符设置为零字节。

footer

如果指定了 value,它必须是 on 或 off,分别启用或禁用表格页脚((n rows) 计数)的显示。如果省略 value,该命令会切换页脚显示的开关状态。

format

设置输出格式为 aligned、asciidoc、csv、html、latex、latex-longtable、troff-ms、unaligned 或 wrapped。允许使用唯一缩写。

aligned 格式是标准的、适合人阅读且排版整齐的文本输出;这是默认格式。

unaligned 格式将一行中的所有列写在一行上,由当前活动的字段分隔符分隔。这对于创建可能被其他程序读取的输出很有用,例如,制表符分隔或逗号分隔格式。然而,如果字段分隔符字符出现在列的值中,则不会被特殊处理;因此,CSV 格式可能更适合这些目的。

csv 格式按逗号分隔的列值输出,并应用 RFC 4180 中描述的加引号规则。此输出与服务器的 CSV 格式的 COPY 命令兼容。生成包含列名的表头行,除非 tuples_only 参数设置为 on。不打印表格标题和页脚。每行以系统相关的行结束字符结束,对于类 Unix 系统通常是单个换行符(\n),对于 Microsoft Windows 则是回车和换行序列(\r\n)。可以用\pset csv_fieldsep 选择逗号以外的字段分隔字符。

wrapped 格式与 aligned 相似,但会将较宽的数据值折成多行,使输出适应目标列宽。目标宽度的确定方式见 columns 选项的说明。请注意,psql 不会尝试对列标题折行;因此,如果列标题所需的总宽度超过目标宽度,wrapped 格式的行为就与 aligned 相同。

asciidoc、html、latex、latex-longtable 和 troff-ms 格式生成的表格旨在包含在使用相应标记语言的文档中。它们不是完整的文档!这在 HTML 中可能不是必需的,但在 LaTeX 中,则必须有一个完整文档的外层结构。latex 格式使用 LaTeX 的 tabular 环境。latex-longtable 格式需要 LaTeX 的 longtable 和 booktabs 包。

linestyle

设置边框线绘制样式为 ascii、old-ascii 或 unicode 之一。允许使用唯一缩写。(这意味着一个字母就足够了。)默认设置为 ascii。此选项仅影响 aligned 和 wrapped 输出格式。

ascii 样式使用普通的 ASCII 字符。数据中的换行符以右边缘的+符号表示。当 wrapped 格式在没有换行符的位置把数据折到下一行时,会在第一行的右边缘显示一个点(.),并在下一行的左边缘再次显示。

old-ascii 样式使用普通的 ASCII 字符,采用 PostgreSQL 8.4 及更早版本的格式样式。数据中的换行符以替代左侧列分隔符的:符号表示。当数据在没有换行符的位置折到下一行时,则用;符号替代左侧列分隔符。

unicode 样式使用 Unicode 框线绘制字符。数据中的换行符以右边缘的回车符号表示。当数据在没有换行符的位置折到下一行时,会在第一行的右边缘显示省略号符号,并在下一行的左边缘再次显示。

当 border 设置大于零时,linestyle 选项还决定用哪些字符绘制边框线。普通的 ASCII 字符在任何环境中都可用,但在支持 Unicode 的显示设备上,Unicode 字符更美观。

null

设置用于代替空值打印的字符串。默认不打印任何内容,这很容易被误认为空字符串。例如,你可能更喜欢使用\pset null '(null)'。

numericlocale

如果指定了 value,它必须是 on 或 off,分别启用或禁用使用区域设置特定的字符来分隔小数点左侧的数字组。如果省略 value,该命令会在常规数字输出和区域设置特定的数字输出之间切换。

pager

控制查询和 psql 帮助输出是否使用分页器程序。当 pager 选项为 off 时,不使用分页器程序。当 pager 选项为 on 时,会在适当时使用分页器,即输出目标为终端且内容无法在屏幕上完整显示时。pager 选项也可以设为 always,这样所有终端输出都会使用分页器,无论内容是否能在屏幕上完整显示。不带 value 的\pset pager 会切换分页器的使用状态。

如果设置了环境变量 PSQL_PAGER 或 PAGER,需要分页的输出会通过管道传给指定程序。否则,使用与平台有关的默认程序(如 more)。

当使用 \watch 命令重复执行查询时,在 Unix 系统上会改用环境变量 PSQL_WATCH_PAGER 来查找分页器程序。之所以单独配置它,是因为这种用法可能会让传统分页器无法正常工作;但它可用于把输出发送给能够理解 psql 输出格式的工具(例如 pspg --stream)。

pager_min_lines

如果将 pager_min_lines 设置为大于页面高度的数字,那么只有待显示的输出至少达到这么多行时,才会调用分页器程序。默认设置为 0。

recordsep

指定非对齐输出格式使用的记录(行)分隔符。默认为换行符。

recordsep_zero

将非对齐输出格式使用的记录分隔符设置为零字节。

tableattr(或 T)

在 HTML 格式中,这指定要放在 table 标签内的属性,例如 cellpadding 或 bgcolor。请注意,你可能不需要在这里指定 border,因为\pset border 已经负责处理它。如果没有给出 value,则取消设置表格属性。

在 latex-longtable 格式中,这控制每个包含左对齐数据类型的列的宽度比例。它以空白分隔的值列表指定,例如'0.2 0.2 0.6'。未指定的输出列使用最后指定的值。

title(或 C)

设置随后打印的所有表格的标题。这可以为输出提供描述性标签。如果没有给出 value,则取消设置标题。

tuples_only(或 t)

如果指定了 value,它必须是 on 或 off,分别启用或禁用仅元组模式。如果省略 value,该命令会在常规输出和仅元组输出之间切换。常规输出包含列标题、表格标题和各种页脚等附加信息。在仅元组模式下,只显示实际的表格数据。

unicode_border_linestyle

将 unicode 线条样式的边框绘制样式设置为 single 或 double。

unicode_column_linestyle

将 unicode 线条样式的列分隔线绘制样式设置为 single 或 double。

unicode_header_linestyle

将 unicode 线条样式的表头分隔线绘制样式设置为 single 或 double。

xheader_width

将扩展输出的表头最大宽度设置为以下之一:full(默认值)、column、page 或整数值。

full:扩展表头不截断,其宽度与最宽的输出行相同。

column:将表头行截断为第一列的宽度。

page:将表头行截断为终端宽度。

整数值:指定表头行的确切最大宽度。

这些不同格式的外观示例可参见下面的示例。

提示

有各种快捷命令用于\pset。请参见\a、\C、\f、\H、\t、\T 和\x。

相关条目

文档与源码

来源构建
版本
18.7
构建
https://ftp.postgresql.org/pub/source/v18.7/postgresql-18.7.tar.bz2
来源指纹
1b2d62b4845aa46374f2cb680f95d3392322cc8128646992ae4e18d0e7084915

版本比较

PostgreSQL 17 → 18: 无变化。

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回psql 命令 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。