postgresql 在psql中显示查询结果时有没有办法设置列的最大宽度?

pu3pd22g  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(289)

我遇到的问题是我有一个有10列的表。其中1列是HTML,因此非常长。它是如此之长,以至于它缠绕了几行,并破坏了其他有用的输出。通常情况下,我会选择除了那一列之外的所有列。然而,我开始与另一个表连接,现在有20列。
是否有一种方法可以指定最大列宽或在某个字符数之后截断列?
我试过\x。有点帮助...但大多数情况下一切看起来都很混乱

yks3o0rb

yks3o0rb1#

可以通过\pset columns X指定列宽

postgres=# select 'some longer text some longer text some longer text some longer text some longer text some longer text';
┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                               ?column?                                                │
╞═══════════════════════════════════════════════════════════════════════════════════════════════════════╡
│ some longer text some longer text some longer text some longer text some longer text some longer text │
└───────────────────────────────────────────────────────────────────────────────────────────────────────┘
(1 row)

postgres=# \pset format wrapped 
Output format is wrapped.
postgres=# \pset columns 20
Target width is 20.
postgres=# select 'some longer text some longer text some longer text some longer text some longer text some longer text';
┌──────────────────┐
│     ?column?     │
╞══════════════════╡
│ some longer text…│
│… some longer tex…│
│…t some longer te…│
│…xt some longer t…│
│…ext some longer …│
│…text some longer…│
│… text            │
└──────────────────┘
(1 row)

字符串
请确保您的寻呼机配置良好-设置全局变量:

export PAGER=less
export LESS='-iMSx4 -RSFX -e'

t1qtbnec

t1qtbnec2#

影响屏幕输出的列宽度的两个psql选项是

一月一日
一米

您可以执行这两个命令来查看它们的当前值。
根据我的经验,要获得最佳输出,请将它们设置为:

=> \pset format wrapped
Output format is wrapped.
=> \pset columns 0     
Target width is unset.

字符串
wrapped可能是自我解释的,但设置columns 0是一个“特殊”值,它告诉psql根据检测到的屏幕宽度*****设置列宽。根据我的经验,它的动态宽度很好,数据内容较短的列被赋予较窄的列。
然而,这仍然会为您提供该行/列的值的完整文本,OP也希望能够截断它。对我来说最难忘的功能是
rpad(<column_name>,<max_width>)的值。
如果您希望在标题中保留列名,而不是只看到“rpad”作为列名,那么使用
rpad(<column_name>,<max_width>) as <column_name>

ukxgm1gy

ukxgm1gy3#

您可以使用

select left(column_name,40) as column_name from ...

字符串

相关问题