如何在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)
相关:
在psql中显示JSONB结果时,是否有方法设置列的最大宽度?
还请参见:
columns
设置包装格式的目标宽度,以及确定输出是否足够宽以要求寻呼机或在扩展自动模式下切换到垂直显示的宽度限制。零(默认)导致目标宽度由环境变量列控制,如果没有设置列,则导致检测到的屏幕宽度。此外,如果列为零,则包装格式只会影响屏幕输出。如果列为非零,那么文件和管道输出也会被包装到该宽度。
发布于 2020-12-21 19:20:48
这个问题来自\pset wrapped
(在这里描述psql):
psql的...Note不会尝试包装列标题;因此,如果列标题所需的总宽度超过目标,包装格式的行为与对齐格式相同。
将columns
值设置为超出标题标题宽度的值。
https://stackoverflow.com/questions/64503015
复制相似问题