postgresql psql的另一种输出格式,每行显示一列并带有列名

qni6mghb  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(8)|浏览(227)

我在Ubuntu上使用PostgreSQL 8.4。我有一个表,表中的列从c1cN。这些列足够宽,以至于选择所有列会导致一行查询结果多次换行。因此,输出很难阅读。
当查询结果只包含几行时,如果我可以查看查询结果,使每行的每列都在单独的行上,这将是很方便的,例如。

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设置可以让我做这样的事情?

ahy6op9u

ahy6op9u1#

我只需要花更多的时间来看文档。这个命令:

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

igetnqfo2#

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

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

  • 记录是否能适应屏幕的宽度; psql使用普通格式。
  • 如果记录不能适应屏幕的宽度; psql使用扩展模式。

若要取得此用途:\x自动
Postgresql 9.5 Documentation on PSQL command.
宽屏幕,正常格式:

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。Look under 'Files' section in the psql doc for more info

~/.psqlrc

\x auto
vuktfyat

vuktfyat3#

你有这么多的选择,你怎么会困惑:-)?主要的控制是:

# \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 format 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
00jrzges

00jrzges4#

一个有趣的事情是我们可以水平地查看表,而不用折叠。我们可以使用PAGER环境变量。psql使用它。您可以设置

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

或者如果less -S已经在命令行中可用,如果没有正确的位置,则只使用less -S。-S用于查看展开的行。您可以传入任何自定义查看器或其他选项。
我在Psql Horizontal Display中写了更多

ftf50wuq

ftf50wuq5#

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 repositories,只需安装一个软件包(在类似Debian的发行版上):

sudo apt install pspg

66bbxpm5

66bbxpm56#

如果你和我一样正在寻找psql command-line mode
here是语法--pset expanded=auto
psql命令行选项:
-P扩展=自动
--pset扩展=自动
-x个
--展开
...
另一种方式是-q选项ref

hivapdat

hivapdat7#

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

zwghvu4y

zwghvu4y8#

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

  • 首先使用以下代码实现bash脚本:
    目录〉“/tmp/sql. op”;如果您有任何问题,请与我们联系。
  • 把它保存起来就像mypager.sh*
  • 然后通过将脚本的完整路径设置为值来导出环境变量PAGER。

例如:-导出寻呼机=“/路径/mypager.sh”

  • 然后登录到psql程序,然后执行命令**\H**
  • 最后执行任何查询,表格输出将以html表格格式显示在zenity中。

相关问题