Silveri
Silveri

Reputation: 5261

Disable wrapping in Psql output

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 as format 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?

Upvotes: 67

Views: 35069

Answers (5)

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'

Then, to toggle it off and back on, use

\pset pager off
\pset pager on

Upvotes: 21

Silveri
Silveri

Reputation: 5261

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 toggle this feature while viewing output in less by typing -S and Enter.

Upvotes: 98

Eugen Konkov
Eugen Konkov

Reputation: 25207

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

Upvotes: 10

Arian Daneshvar
Arian Daneshvar

Reputation: 151

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.

Upvotes: 15

Akshay Shet
Akshay Shet

Reputation: 421

To disable the wrapped output of the select query.

\pset pager on and \pset pager off to switch back to the older output view.

Upvotes: 27

Related Questions