PostgreSQL:如何在长输出中向上滚动

问题描述 投票:0回答:2

假设我收到一个大查询。 Postgres 给了我

--More--
指示器。按
<space>
向下移动一页。按
<enter>
向下移动一行。有办法向后滚动吗?是否可以将输出通过管道传输到类似
less
的内容?

我正在 CentOS7 上通过 PuTTY 访问 PostgreSQL 9.5。

例如:

pundb=# \x on
pundb=# select * from pg_roles;

-[ RECORD 1 ]--+-------------
rolname        | dinner
rolsuper       | t
rolinherit     | t
rolcreaterole  | t
rolcreatedb    | t
rolcanlogin    | t
rolreplication | t
rolconnlimit   | -1
rolpassword    | ********
rolvaliduntil  |
rolbypassrls   | t
rolconfig      |
oid            | 10
-[ RECORD 2 ]--+-------------
rolname        | sushi
rolsuper       | f
rolinherit     | t
rolcreaterole  | f
rolcreatedb    | f
rolcanlogin    | t
rolreplication | f
rolconnlimit   | -1
rolpassword    | ********
rolvaliduntil  |
rolbypassrls   | f
rolconfig      |
oid            | 16384
-[ RECORD 3 ]--+-------------
rolname        | drum
rolsuper       | f
rolinherit     | t
rolcreaterole  | f
rolcreatedb    | f
--More--

编辑:我知道

h
会带我去寻求帮助。它说

b 或 ctrl-B 向后跳 k 屏文本 [1]

但这不起作用。也许是因为我在 PuTTY 中?

postgresql psql putty pager
2个回答
10
投票

您可能使用不支持向上滚动的

$PAGER
。例如。
more

尝试使用不同的 PAGER 变量执行 postgresql 客户端:

PAGER=less psql [...]

或者:

export PAGER=less
psql [...]

如果您想让更改永久生效,请将上面的

export
行插入到您的
~/.bash_profile
中。当然,要应用到您的 shell,您需要注销并再次登录。

请记住,您还可以向

less
内的
$PAGER
添加参数。我喜欢以下选项
less(1)
:

# ~/.bash_profile
# -R: Handle colors correctly
# -S: Chop long lines (scroll left/right using arrow keys or h/j)
export PAGER='less -RS'

注意:全局更新此环境变量会影响许多使用

$PAGER
环境变量的事情,但是,嘿,这只会增强体验,对吧?


2
投票

左下角的

--More--
指示器表明您正在使用默认寻呼机
more
,它不允许向后移动。您可以使用以下命令从 less
 内部切换到 
psql

\setenv PAGER 'less'

顺便说一句,将寻呼机设置为

less -S
(或在
-S
内键入 less
Enter
)将允许您横向滚动而不换行(从而无需展开模式)。如果你想变得更花哨,你可以使用
pspg
:)

© www.soinside.com 2019 - 2024. All rights reserved.