Question

When I use psql, the command line tool of PostgreSQL, in interactive mode, it lists data as paginated output.

However, because I use psql in a terminal application which can handle long outputs itself, I rather would like to get the whole output without the paginating with the annoying --more-- line.

Is there any way to customise the paging behavior in psql? I tried to set LESS in the surrounding shell environment to cat, but this din't help.

Any suggestions?

Was it helpful?

Solution

From the fine psql manual:

\pset option [ value ]
[...]
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

So you can say this from the psql prompt:

psql> \pset pager off

to turn the pager off. If you want this to always apply, you can add \pset pager off to your ~/.psqlrc file.

You can also use \? from the psql prompt to get a quick summary of the special commands at your disposal.

OTHER TIPS

For completeness we might mention that for a one-off or to use as a setting in one of your scripts... (and as mentioned by "mu", see the psql --help (manual))

As a command in a script

psql --pset=pager-off -c "<sqlCommand>" <databaseName>

From your commandline

psql --pset=pager=off <databaseName>

This would be in effect for the single command only so it is most useful in a script.

You can use this method in lieu of making temporary changes within the psql utility or permanent settings via the init file (~/.psqlrc).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top