我在Ubuntu上使用PostgreSQL 8.4。我有一个从c1到cN列的表。列足够宽,选择所有列会导致一行查询结果换行多次。因此,输出很难阅读。

当查询结果仅由几行组成时,如果我可以查看查询结果,以便每行的每一列都在单独的行上,例如。

 c1: <value of row 1's c1>
 c2: <value of row 1's c1>
 ...
 cN: <value of row 1's cN>
 ---- some kind of delimiter ----
 c1: <value of row 2's c1>
 etc.

我在一个服务器上运行这些查询,我不希望安装任何额外的软件。有没有一个psql设置可以让我这样做?


当前回答

(新)扩展自动模式:\x Auto

Postgresql 9.2新增功能;PSQL自动将记录与屏幕的宽度匹配。以前你只能打开或关闭扩展模式,并且必须根据需要在模式之间切换。

记录是否能放进屏幕的宽度;PSQL使用普通格式。 如果记录无法装入屏幕宽度;PSQL使用扩展模式。

要得到这个使用:\x auto

Postgresql 9.5 PSQL命令文档。


宽屏,格式正常:

 id | time  |       humanize_time             | value 
----+-------+---------------------------------+-------
  1 | 09:30 |  Early Morning - (9.30 am)      |   570
  2 | 11:30 |  Late Morning - (11.30 am)      |   690
  3 | 13:30 |  Early Afternoon - (1.30pm)     |   810
  4 | 15:30 |  Late Afternoon - (3.30 pm)     |   930
(4 rows)

窄屏幕,扩展格式:

-[ RECORD 1 ]-+---------------------------
id            | 1
time          | 09:30
humanize_time | Early Morning - (9.30 am)
value         | 570
-[ RECORD 2 ]-+---------------------------
id            | 2
time          | 11:30
humanize_time | Late Morning - (11.30 am)
value         | 690
-[ RECORD 3 ]-+---------------------------
id            | 3
time          | 13:30
humanize_time | Early Afternoon - (1.30pm)
value         | 810
-[ RECORD 4 ]-+---------------------------
id            | 4
time          | 15:30
humanize_time | Late Afternoon - (3.30 pm)
value         | 930

如何使用\x自动启动psql ?

在启动时配置\x auto命令,将其添加到主文件夹中的. psqlc并重新启动psql。在psql文档的“文件”部分查看更多信息。

~ / . psqlrc

\x auto

其他回答

有趣的是,我们可以水平地查看表格,不需要折叠。我们可以使用PAGER环境变量。PSQL利用了它。你可以设置

export PAGER='/usr/bin/less -S'

如果命令行中已经有-S,如果没有合适的位置,则只需少用-S。查看展开的行。您可以传入任何自定义查看器或其他选项。

我在Psql水平显示中写了更多

如果你和我一样在寻找psql命令行模式,

下面是语法:pset expanded=auto

PSQL命令行选项: - p =扩大汽车 ——pset扩大=汽车 - x ——扩大 ...

另一种方法是-q option ref

你有这么多选择,你怎么会困惑呢?主要控制有:

# \pset format
# \H
# \x
# \pset pager off

每个人都有选择和相互作用。最自动的选项是:

# \x off;\pset format wrapped
# \x auto

更新的“\x auto”选项仅在“需要时”切换到逐行显示。

-[ RECORD 1 ]---------------
id          | 6
description | This is a gallery of oilve oil brands.
authority   | I love olive oil, and wanted to create a place for
reviews and comments on various types.
-[ RECORD 2 ]---------------
id          | 19
description | XXX Test A 
authority   | Testing

旧的“\pset格式包装”是类似的,它试图在屏幕上整齐地适合数据,但如果头部不适合,就会回到未对齐的状态。下面是一个wrapped的例子:

 id |          description           |            authority            
----+--------------------------------+---------------------------------
  6 | This is a gallery of oilve     | I love olive oil, and wanted to
    ; oil brands.                    ;  create a place for reviews and
    ;                                ;  comments on various types.
 19 | Test Test A                    | Testing

(新)扩展自动模式:\x Auto

Postgresql 9.2新增功能;PSQL自动将记录与屏幕的宽度匹配。以前你只能打开或关闭扩展模式,并且必须根据需要在模式之间切换。

记录是否能放进屏幕的宽度;PSQL使用普通格式。 如果记录无法装入屏幕宽度;PSQL使用扩展模式。

要得到这个使用:\x auto

Postgresql 9.5 PSQL命令文档。


宽屏,格式正常:

 id | time  |       humanize_time             | value 
----+-------+---------------------------------+-------
  1 | 09:30 |  Early Morning - (9.30 am)      |   570
  2 | 11:30 |  Late Morning - (11.30 am)      |   690
  3 | 13:30 |  Early Afternoon - (1.30pm)     |   810
  4 | 15:30 |  Late Afternoon - (3.30 pm)     |   930
(4 rows)

窄屏幕,扩展格式:

-[ RECORD 1 ]-+---------------------------
id            | 1
time          | 09:30
humanize_time | Early Morning - (9.30 am)
value         | 570
-[ RECORD 2 ]-+---------------------------
id            | 2
time          | 11:30
humanize_time | Late Morning - (11.30 am)
value         | 690
-[ RECORD 3 ]-+---------------------------
id            | 3
time          | 13:30
humanize_time | Early Afternoon - (1.30pm)
value         | 810
-[ RECORD 4 ]-+---------------------------
id            | 4
time          | 15:30
humanize_time | Late Afternoon - (3.30 pm)
value         | 930

如何使用\x自动启动psql ?

在启动时配置\x auto命令,将其添加到主文件夹中的. psqlc并重新启动psql。在psql文档的“文件”部分查看更多信息。

~ / . psqlrc

\x auto

另外,一定要检查\H,它可以打开/关闭HTML输出。在控制台上阅读不一定容易,但是转储到文件中(参见\o)或粘贴到编辑器/浏览器窗口中以查看很有趣,特别是对于相对复杂的多行数据。