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

PostgreSQL: How to scroll up in long output

假设我收到一个大型查询。 Postgres 给了我 --More-- 指标。按 <space> 向下移动一页。按 <enter> 向下移动一行。有没有办法向上滚动?是否可以将输出通过管道传输到 less?

我正在通过 PuTTY 在 CentOS7 上访问 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 or ctrl-B Skip backwards k screenfuls of text [1]

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

您可能正在使用不支持向上滚动的 $PAGER。例如。 more.

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

PAGER=less psql [...]

或:

export PAGER=less
psql [...]

如果您想永久更改,请将上面的 export 行插入您的 ~/.bash_profile

注意:这会影响许多使用 $PAGER 环境变量的东西,但是嘿,它只会增强体验,对吗?

lower-left 角中的 --More-- 指示符表明您正在使用 psql 内部的默认寻呼机 more, which doesn't allow backward movement. You can switch to less 使用此命令:

\setenv PAGER 'less'

顺便说一句,将寻呼机设置为 less -S(或在 less 中键入 -SEnter)将允许您横向滚动而不会包装(因此不需要扩展模式)。如果你想花哨,你可以使用 pspg :)