psql的备用输出格式


314

我在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设置可以让我做类似的事情?

Answers:


530

我只需要花更多时间盯着文档。该命令:

\x on

会做我想要的。这是一些示例输出:

select * from dda where u_id=24 and dda_is_deleted='f';
-[ RECORD 1 ]------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dda_id             | 1121
u_id               | 24
ab_id              | 10304
dda_type           | CHECKING
dda_status         | PENDING_VERIFICATION
dda_is_deleted     | f
dda_verify_op_id   | 44938
version            | 2
created            | 2012-03-06 21:37:50.585845
modified           | 2012-03-06 21:37:50.593425
c_id               | 
dda_nickname       | 
dda_account_name   | 
cu_id              | 1
abd_id             | 

8
您也可以尝试使用\ pset格式包装(允许的格式为未对齐,对齐,包装,html,乳胶,troff-ms)。如果显示足够窄,它将自动换行。
布莱斯

12
\x仅此一项即可切换该值,从而节省了三个按键!(在宽和窄输出之间快速切换时很有用)。
msanford

7
如果您\G要从Mysql中寻找等效项,请尝试\x\g\x在查询末尾追加或在~/.psqlrc添加中定义快捷方式\set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0',然后在末尾使用:G。(注缺少分号)
斯瓦沃米尔Lenart

5
是否可以\x on在命令行中以某种方式传递“ ”或等效项?如果我可以保存(例如,通过使用bash shell别名),psql --something以便在默认情况下始终启用该选项,那就太好了。
machineghost '18

2
@machineghost使用-P expanded=auto--pset expanded=auto
alecdwm

269

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

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 auto启动psql?

\x auto在启动时配置命令,方法是将其添加到.psqlrc主文件夹中并重新启动psql。在psql doc中的“文件”部分下查找更多信息

〜/ .psqlrc

\x auto

69

您有很多选择,您怎么会困惑:-)?主要控件是:

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

每个人都有选择和与其他人的互动。最自动的选项是:

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

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

-[ 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包装格式”与之类似,因为它试图将数据整齐地容纳在屏幕上,但是如果标题不适合,则会退回到未对齐的位置。这是包装的示例:

 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\pset pager off是一个不错的。
mitnk '19

是否\x off; \pset format wrapped\x auto打算一起使用,或者它们是否互斥?
Demitri '19

20

一件有趣的事情是我们可以水平查看桌子,而无需折叠。我们可以使用PAGER环境变量。psql使用它。你可以设置

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

或仅less -S在命令行中已经可用(如果位置不正确)。-S查看展开的线。您可以传递任何自定义查看器或其他选项。

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


1
答案真的很好。我很惊讶它没有标高。非常适合在码头工作的任何人。
-LUser

这非常有用
Merlin

这很有用,但是如何向右滚动呢?
Niel de Wet

18

pspg 是一个简单的工具,提供高级表格格式设置,水平滚动,搜索和更多功能。

git clone https://github.com/okbob/pspg.git
cd pspg
./configure
make
make install

然后确保更新PAGER变量,例如在~/.bashrc

export PAGER="pspg -s 6" 

其中-s代表配色方案(1-14)。如果您使用的是pgdg仓库,只需安装一个软件包(在类似Debian的发行版上):

sudo apt install pspg

pspg示例


7

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


1

您可以使用zenity将查询输出显示为html表。

  • 首先用以下代码实现bash脚本:

    cat>'/tmp/sql.op'; zenity --text-info --html --filename ='/ tmp / sql.op';

    mypager.sh一样保存

  • 然后通过将脚本的完整路径设置为值来导出环境变量PAGER。

    例如:-export PAGER ='/ path / mypager.sh'

  • 然后登录到psql程序,然后执行命令\ H

  • 最后执行任何查询,表输出将以zenity格式以html表格式显示。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.