psql的替代输出格式

我在Ubuntu上使用PostgreSQL 8.4。 我有一个表格,列c1cN 。 列足够宽,select所有列会导致一行查询结果多次包装。 因此,输出很难阅读。

当查询结果只包含几行时,如果我可以查看查询结果,每行的每一列都在一个单独的行上

  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 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 | 

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

Postgresql 9.2的新function; PSQL自动适合屏幕宽度的logging。 以前只有扩展模式打开或closures,必须根据需要在模式之间切换。

  • 如果logging可以适合屏幕的宽度; psql使用正常的格式。
  • 如果logging适合屏幕的宽度; 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

在启动时configuration\x auto命令,方法是将其添加到主文件夹中的.psqlrc并重新启动psql。 请参阅psql文档中的“文件”部分以获取更多信息 。

〜/ .psqlrc

 \x auto 

你有这么多的select,你怎么会感到困惑:-)? 主要控制措施是:

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

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

 # \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格式包装”是类似的,它试图将数据整齐地放在屏幕上,但如果标题不适合,则会退回到未alignment的状态。 这是一个包装的例子:

  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 

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

一个有趣的事情是我们可以水平地查看桌子,不用折叠。 我们可以使用PAGER环境variables。 psql使用它。 你可以设置

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

或者如果它已经在命令行中已经可用,或者如果没有正确的位置,那么就less -S 。 -S查看展开的线条。 您可以通过任何自定义查看器或其他选项。

我写了更多的Psql水平显示

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

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

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

    保存它像mypager.sh

  • 然后通过设置脚本的完整path作为值导出环境variablesPAGER。

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

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

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