【发布时间】: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