我喜欢将 psql 与 Tmux 和 Vim 结合使用,使用 Vim 编辑查询并将它们发送到另一个 Tmux 窗格中的 psql。这是一个非常棒的工作流程,在我看来,它远胜于 DBeaver 之类的 GUI,但:
不需要太多列,psql 就无法很好地显示结果,并且 psql 输出中的换行看起来很糟糕。
到目前为止我的选择是:
扩展模式
您\x
可以一次看到一行,更像 JSON 对象。这还算可以,但对于行与行之间的比较来说就很糟糕了。
缩小字体
经过一番折腾,ctrl -
我有时可以缩小到足以让结果显示在一行上。不用说,这不是一个真正可行的解决方案
让 tmux 截断长行的末尾
如图所示这里可以让 Tmux 截断行而不是包装它们。
如果我只对前几列感兴趣,这种方法就很好了。但这实际上不是一种可持续的工作方式。如果我想比较最后的几列怎么办?
有人能想到我可以探索的任何途径,而不会让我使用 GUI 的同事嘲笑我查看宽表格的方式非常不充分吗?
它不必特定于 psql 或 Tmux。也许只是一种使终端更宽的方法。
答案1
考虑普斯普- 由 PostgreSQL 开发人员 Pavel Stěhule 创建的寻呼机。
该分页器主要为终端数据库客户端设计。它具有许多方便的分页表格数据功能,例如向右滚动时固定列。pspg 可与其他数据库客户端一起使用,甚至可以与 csv 文件一起使用,如其 github 项目页面中的示例所示。
要开始使用 pspg,请安装它并在您的环境中导出 PAGER 或 PSQL_PAGER(取自项目页面):
#for Postgres 10 and older
export PAGER="pspg"
#for postgres 11 and newer
export PSQL_PAGER="pspg"
或添加以下内容~/.psqlrc
\setenv PAGER pspg
您可能还对在拆分窗格中打开分页器感兴趣,同时让您的 psql shell 准备好进行其他查询。
〜/ bin / pspg-包装器
#!/usr/bin/env bash
if [[ $TMUX ]]
then
tempfile=$(mktemp)
cat - > "$tempfile"
tmux splitw -p 50 "pspg $tempfile"
unlink "$tempfile"
else #
pspg -F
fi
~/.psqlrc
\setenv PAGER ~/bin/pspg-wrapper
如果 psql 正在运行tmux然后打开普斯普在分割窗格中,否则只需运行 pspg。-F
意味着如果输出适合单屏,则直接在标准输出上打印
答案2
按照此评论我们可以使用它less -S
作为寻呼机来实现左/右滚动。
由于 psql 尊重PAGER
环境变量,实现左/右滚动的一种好的低影响方法可能是创建一个别名,例如:
alias psql="PAGER='less -S' psql"
这样就可以使用左/右键在 psql 输出中移动宽表。对我来说,这看起来是一个非常好的解决方案。