Turn off pager for psql's interactive output
Solution 1
TL;DR:
\pset pager 0
From the \pset section of the psql manual:
pager
Controls use of a pager program for query and psql help output. If the environment variable PAGER is set, the output is piped to the specified program. Otherwise a platform-dependent default (such as more) is used.
When the pager option is off, the pager program is not used. When the pager option is on, the pager is used when appropriate, i.e., when the output is to a terminal and will not fit on the screen. The pager option can also be set to always, which causes the pager to be used for all terminal output regardless of whether it fits on the screen. \pset pager without a value toggles pager use on and off.
Solution 2
Try switcher:
database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Solution 3
To turn off the pager when using psql
in the shell :
psql -P pager=off ...
You could also export an empty PAGER
environment variable, so you don't need to add the option to every statement. It will stay set until you close your current shell.
export PAGER=
psql ...
Finally, a workaround that may be easier to remember: pipe the output through cat
, which will disable the default pager
psql ... | cat
Solution 4
Switch the pager off with
\pset pager off
Solution 5
add below code in ~/.psqlrc to retain the behaviour
\pset pager off
Related videos on Youtube
Comments
-
Yuri Ushakov over 1 year
We switched from PostgreSQL 8.3 to 9.0. Perhaps it's a new feature or perhaps just a configuration change, but now when output from commands (like,
\d tablename
) exceeds visible vertical space, psql seem to pipe the output through something similar toless
. I could not find a way to turn this behaviour off. Any advice? Thanks.P.S. I'm scrolling the buffer using PuTTY's
Shift+PgUp/PgDn
so I don't need psql's paging. Plus, when I pressq
in the psql's paging, its output disappears from the screen entirely (just like after runningless
in bash), which is wrong from the general use-cases point of view.-
Noumenon over 7 yearsIf you're here from Google just trying to scroll through the pager, it's
Space
-- not n or PgDn or down arrow like I tried.
-
-
Yuri Ushakov about 13 yearsThank you. The complete solution looks like:
psql -P pager
. -
FooBee about 13 yearsI guess you can even put an option in your ~/.psqlrc file to avoid having to enter this every time.
-
snapfractalpop over 11 yearsAnyway to pass arguments to less?
-
Michael Rush about 10 yearsI also ran into Yuri's problem. As described above. You can use
\pset pager
in psql to toggle whether the output goes to the pager. However, you should be able to use a pager and not have the output disappear from the screen when you quit. The answer is to use 'more' instead of 'less' as the pager. You can either do that by setting the PAGER environment variable in your shell or by adding a PAGER environment variable to a ~/.psqlrc file. -
FooBee about 10 years@MichaelRush: Set
PAGER
toless -X
and it won't clear the screen. -
lolesque almost 9 yearsAlso
\pset pager [on|off]
for constant result. -
Daniel Stevens over 3 yearsFrom the man page:
-X
or--no-init
- "Disables sending the termcap initialization and deinitialization strings to the terminal. This is sometimes desirable if the deinitialization string does something unnecessary, like clearing the screen."