Disable wrapping in Psql output
Solution 1
Psql
uses a system viewer to show its output in the console. In bash
it likely uses less
for the scrollable/page-able features it provides. To use a different viewer or use different settings, you just need to set the PAGER
environment variable.
Running psql
to use less
with the -S
or --chop-long-lines
option seemed to work for me:
PAGER="less -S" psql
You can also enable this feature while viewing output in less
by typing -S
and Enter.
Solution 2
To disable the wrapped output of the select query.
\pset pager on and \pset pager off to switch back to the older output view.
Solution 3
less's -F
or -S
flag will causes \d some_table
to not show any output in some cases.
-F or --quit-if-one-screen
Causes less to automatically exit if the entire file can be
displayed on the first screen.
-S or --chop-long-lines
Causes lines longer than the screen width to be chopped rather than folded.
That is, the portion of a long line that does not fit in the screen width is
not shown. The default is to fold long lines; that is, display the remainder
on the next line.
Use them like this:
PAGER="less -S" psql
Seems safer at the inconvenience of having to manually exit less.
Solution 4
The default pager for psql
is less
. Then for no wrapped lines must be use less -S
.
PAGER="less -S" psql
is a good aproach. But inside psql
you can use
\setenv PAGER 'less -S'
Solution 5
probably you should use aligned
format for output:
\pset format aligned
You can check all available formats to fit your needs:
\pset format TAB
aligned html latex-longtable unaligned
asciidoc latex troff-ms wrapped
Also you should check PAGER
configured value in your environment
Related videos on Youtube
Silveri
Updated on February 05, 2021Comments
-
Silveri about 3 years
When using Psql in Linux, if the result of my SQL query contains many columns or long strings of data, it will wrap the initial view and only once I scroll to the side will it stop wrapping and show each row on a separate line.
I've tried various
\pset
options such asformat unaligned
,format aligned
,format wrapped
,columns 0
,columns 1000
, but none seemed to fully stop wrapping unless I generate static output to a file.How can I set it to never wrap the output while still being scrollable and showing the result using the default ascii table format?
-
chb over 3 yearsCheckout pspg, a pager specifically designed for PostgreSQL use.
-
-
ash over 4 years
aligned
inserts the results into an ASCII-art table for me, which for long values means that I get many lines of-----
to create the table header before the actual values.unaligned
avoids this. -
AndrewHarvey over 4 yearsThis turns off the pager completely, preventing scrolling up and down through large datasets (it will try to print the whole output to the terminal). Using @Silveri's tip still lets you use the pager for scrolling but just prevents wrapping.
-
alinsoar about 3 yearsfor me it was better with
\pset format wrapped
. -
SamGoody almost 3 yearsyou could add -t and it will skip the table headers. And -q to skip some of the other headers.
-
Ciro Santilli OurBigBook.com about 2 years
psql() ( PAGER="less -S" command psql "$@" )