如何在psql中设置最大列宽?

问题描述

如何截断export default function ({ $axios },inject) { const myService = { async create (user) { $axios.post('/api/user',{ user }) } } // Will be available in the components as this.$myService inject('myService',myService) } 中的多个长列?我有多个列,其中一些很长,我想很容易地将它们全部放入一个终端窗口中。 psql\pset format wrapped在某些情况下(但并非在所有情况下)似乎起作用。我主要关心\pset columns COLUMNS列,它似乎并没有限制它们的长度或正确包装它们。它仅适用于1个字符串的简单情况。

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

示例:

正确设置寻呼机并运行\x

psql

设置仅在最简单的情况下起作用:

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

我正在使用以下命令运行macOS 10.14.6:

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.

相关:

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

psql --version psql (Postgresql) 12.3 less --version less 487 (POSIX regular expressions)
设置包装格式的目标宽度,以及宽度限制 用于确定输出是否足够宽以要求寻呼机或 在扩展自动模式下切换到垂直显示。零( 认值)导致目标宽度由环境控制 变量COLUMNS,如果不是COLUMNS,则检测到的屏幕宽度 组。另外,如果列为零,则仅包装格式 影响屏幕输出。如果columns非零,则文件和管道输出 也被包裹到该宽度。

解决方法

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

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

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