在Psql输出中禁用包装

时间:2016-10-04 11:15:50

标签: bash postgresql psql

在Linux中使用Psql时,如果我的SQL查询的结果包含许多列或长数据字符串,它将包装初始视图,只有当我滚动到侧面时它才会停止换行并在单独的每一行上显示线。

我尝试了各种\pset options,例如format unalignedformat alignedformat wrappedcolumns 0columns 1000,但似乎没有em>完全停止换行,除非我为文件生成静态输出。

如何将其设置为永不包装输出,同时仍然可滚动并使用默认的ascii表格式显示结果?

5 个答案:

答案 0 :(得分:37)

Psql使用系统查看器在控制台中显示其输出。在bash中,它可能会使用less来提供它所提供的可滚动/可分页功能。要使用其他查看器或使用不同的设置,只需设置PAGER环境变量即可。

使用psqlless选项运行-S以使用--chop-long-lines似乎对我有用:

PAGER="less -S" psql

您还可以在less中查看输出时启用此功能,方法是键入-S输入

答案 1 :(得分:9)

禁用选择查询的包装输出。

\ pset pager \ pset pager off 切换回旧的输出视图。

答案 2 :(得分:7)

less -F-S标志会导致\d some_table在某些情况下不显示任何输出。

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

像这样使用它们:

PAGER="less -S" psql

对于不得不手动退出的不便,似乎更安全。

答案 3 :(得分:3)

psql 的默认寻呼机是 less。那么对于没有包装的行,必须使用 less -SPAGER="less -S" psql 是一个很好的方法。但是里面psql你可以使用

\setenv PAGER 'less -S'

答案 4 :(得分:1)

可能你应该使用aligned格式输出:

\pset format aligned

您可以检查所有可用格式以满足您的需求:

\pset format TAB
aligned          html             latex-longtable  unaligned        
asciidoc         latex            troff-ms         wrapped       

此外,您应该检查环境中的PAGER配置值