
我喜歡將 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 正在運行多路復用器然後打開聚苯乙烯在分割窗格中,否則只需執行 pspg。-F
表示如果輸出適合單螢幕,則直接在標準輸出上列印
答案2
按照這則評論less -S
我們可以透過使用尋呼機來實現左/右滾動。
由於 psql 尊重PAGER
環境變量,因此實現左/右滾動的一種不錯的低影響方法可能是創建一個別名,例如:
alias psql="PAGER='less -S' psql"
這允許使用左/右鍵在 psql 輸出中的寬表中移動。對我來說這看起來是一個非常好的解決方案。