Disable wrapping in Psql output

BashPostgresqlPsql

Bash Problem Overview


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?

Bash Solutions


Solution 1 - Bash

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 - Bash

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 - Bash

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 - Bash

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

Solution 5 - Bash

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'

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSilveriView Question on Stackoverflow
Solution 1 - BashSilveriView Answer on Stackoverflow
Solution 2 - BashAkshay ShetView Answer on Stackoverflow
Solution 3 - BashArian DaneshvarView Answer on Stackoverflow
Solution 4 - BashEugen KonkovView Answer on Stackoverflow
Solution 5 - BashAlejandro Salamanca MazueloView Answer on Stackoverflow