【问题标题】:Disable wrapping in Psql output在 Psql 输出中禁用换行
【发布时间】:2016-10-04 11:15:50
【问题描述】:

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

我尝试了各种\pset options,例如format unalignedformat alignedformat wrappedcolumns 0columns 1000,但似乎没有一个完全停止包装,除非我生成静态输出到文件。

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

【问题讨论】:

  • Checkout pspg,专为 PostgreSQL 使用而设计的寻呼机。

标签: bash postgresql psql


【解决方案1】:

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

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

PAGER="less -S" psql

您还可以在查看less 中的输出时通过键入-SEnter 来启用此功能。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这会完全关闭寻呼机,防止在大型数据集中上下滚动(它会尝试将整个输出打印到终端)。使用@Silveri 的提示仍然可以让您使用寻呼机进行滚动,但只是防止换行。
    【解决方案3】:

    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
    

    由于必须手动退出 less 带来的不便,似乎更安全。

    【讨论】:

      【解决方案4】:

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

      \pset format aligned
      

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

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

      您还应该检查您的环境中的PAGER 配置值

      【讨论】:

      • aligned 为我将结果插入到 ASCII-art 表中,这对于长值意味着我得到很多行 ----- 来在实际值之前创建表头。 unaligned 避免了这种情况。
      • 对我来说,\pset format wrapped 更好。
      • 您可以添加 -t 它将跳过表头。和 -q 跳过其他一些标题。
      【解决方案5】:

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

      \setenv PAGER 'less -S'
      

      【讨论】:

        猜你喜欢
        • 2011-04-01
        • 1970-01-01
        • 2019-04-28
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 2014-11-26
        相关资源
        最近更新 更多