【问题标题】:How do I set maximum column width in psql?如何在 psql 中设置最大列宽?
【发布时间】:2020-12-22 03:20:48
【问题描述】:

如何截断psql 中的多个长列? 我有多个列,其中一些很长,我想轻松地将它们全部放在一个终端窗口中。 \pset format wrapped\pset columns COLUMNS 似乎适用于某些情况,但并非所有情况。我主要关心character varying 列,它似乎并没有限制它们的长度或正确包装它们。它仅适用于 1 个字符串的简单情况。

我知道substr()\x,但这些都不是最理想的。我有很多列,所以每个列上的substr() 都太重复了。表格输出在这里最适合我,所以\x 不太容易查看。

例子:

正确设置寻呼机并运行psql:

export PAGER=less
export LESS='-iMSx4 -RSFX -e'
psql -d db_foo

设置仅适用于最简单的情况:

db_foo=# \pset format wrapped
Output format is wrapped.
db_foo=# \pset columns 5
Target width is 5.
db_foo=# select '01234456789 01234456789 01234456789' as foo;
 foo 
-----
 012.
.344.
.567.
.89 .
.012.
...
(1 row)

 -- OK, output is truncated.

db_foo=# select baz from table_baz limit 2;       
             baz              
-----------------------------------
 Salmon Lightweight, Galaxy v1.0.0
 Salmon quant Galaxy v0.14.1.2
(2 rows)

-- not OK, output is not truncated.

db_foo=# select '01234456789 01234456789 01234456789' as foo, baz from table_baz limit 2;
                 foo                 |             baz              
-------------------------------------+-----------------------------------
 01234456789 01234456789 01234456789 | Salmon Lightweight, Galaxy v1.0.0
 01234456789 01234456789 01234456789 | Salmon quant Galaxy v0.14.1.2
(2 rows)

-- not OK, output is not truncated - even the strings 
-- that were truncated before.

我正在运行 macOS 10.14.6,使用:

psql --version
psql (PostgreSQL) 12.3

less --version
less 487 (POSIX regular expressions)

相关:

How to limit the maximum display length of a column in PostgreSQL
How do I change the max column width in PostgreSQL?
Is there a way to set the max width of a column when displaying JSONB results in psql?
Is there a way to set the max width of a column when displaying query results in psql?

另请参阅:

PostgreSQL: Documentation: psql

columns
设置包装格式的目标宽度,以及宽度限制 用于确定输出是否足够宽以需要寻呼机或 在扩展自动模式下切换到垂直显示。零( default) 导致目标宽度由环境控制 变量 COLUMNS,或者如果 COLUMNS 不是,则检测到的屏幕宽度 放。此外,如果列为零,则仅包装格式 影响屏幕输出。如果列不为零,则文件和管道输出 也被包裹到那个宽度。

【问题讨论】:

  • 问题来自\pset wrapped:“...请注意,psql 不会尝试包装列标题标题;因此,如果列标题所需的总宽度超过了,则包装格式的行为与对齐相同目标。”做\pset columns 11 看看会发生什么。
  • 不确定您到底在追求什么,但可能值得一看 pspg

标签: string postgresql psql varchar


【解决方案1】:

问题来自\pset wrapped(此处描述为psql):

...请注意,psql 不会尝试包装列标题;因此,如果列标题所需的总宽度超过目标,则包装格式的行为与对齐格式相同。

columns 值设置为超过标题标题宽度的值。

【讨论】:

    猜你喜欢
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多