psql的替代输出格式
我在Ubuntu上使用PostgreSQL 8.4。 我有一个表格,列c1
到cN
。 列足够宽,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上。