我在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设置可以让我做那样的事情?
答案 0 :(得分:446)
我只需要花更多时间盯着文档。这个命令:
\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 |
答案 1 :(得分:221)
Postgresql 9.2的新功能; PSQL自动将记录拟合到屏幕宽度。以前您只能打开或关闭扩展模式,必须根据需要在模式之间切换。
要使用此功能: \ x auto
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
命令,将其添加到主文件夹中的.psqlrc
并重新启动psql。 Look under 'Files' section in the psql doc for more info
<强>〜/ .psqlrc 强>
\x auto
答案 2 :(得分:58)
你有很多选择,你怎么会感到困惑:-)?主要控制措施是:
# \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
答案 3 :(得分:10)
一个有趣的事情是我们可以水平查看表格而不需要折叠。我们可以使用PAGER
环境变量。 psql使用它。你可以设置
export PAGER='/usr/bin/less -S'
或只是less -S
如果它已经在命令行中可用,如果没有正确的位置。 -S查看展开的线条。您可以传入任何自定义查看器或其他选项。
答案 4 :(得分:8)
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
答案 5 :(得分:7)
另外请务必查看\ H,它会打开/关闭HTML输出。在控制台上读取并不一定容易,但有趣的是转储到文件中(请参阅\ o)或粘贴到编辑器/浏览器窗口以供查看,尤其是对于多行相对复杂的数据。
答案 6 :(得分:1)
您可以使用 zenity 将查询输出显示为html表格。
首先使用以下代码实现bash脚本:
cat&gt; &#39; /tmp/sql.op' ;; zenity --text-info --html --filename =&#39; /tmp/sql.op' ;;
将其保存为 mypager.sh
然后通过将脚本的完整路径设置为值来导出环境变量PAGER。
例如: - 导出PAGER =&#39; /path/mypager.sh'
然后登录psql程序然后执行命令 \ H
最后执行任何查询,tabled输出将以html表格格式显示在zenity中。
答案 7 :(得分:1)