web-dev-qa-db-ja.com

psqlの代替出力フォーマット

私はUbuntu上でPostgreSQL 8.4を使用しています。 c1からcNまでの列を持つテーブルがあります。すべての列を選択すると、クエリ結果の行が複数回折り返されるため、列の幅は十分に広くなっています。その結果、出力は読みにくくなります。

照会結果がほんの数行で構成されている場合、各行の各列が別々の行にあるように照会結果を表示できると便利です。

 c1: <value of row 1's c1>
 c2: <value of row 1's c1>
 ...
 cN: <value of row 1's cN>
 ---- some kind of delimiter ----
 c1: <value of row 2's c1>
 etc.

追加のソフトウェアをインストールしたくないサーバー上でこれらのクエリを実行しています。私にそのようなことをさせるpsql設定はありますか?

261
user100464

私はただドキュメントを見つめてもっと時間を費やす必要がありました。このコマンドは:

\x on

私が望んだことを正確に実行します。これはいくつかの出力例です:

select * from dda where u_id=24 and dda_is_deleted='f';
-[ RECORD 1 ]------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dda_id             | 1121
u_id               | 24
ab_id              | 10304
dda_type           | CHECKING
dda_status         | PENDING_VERIFICATION
dda_is_deleted     | f
dda_verify_op_id   | 44938
version            | 2
created            | 2012-03-06 21:37:50.585845
modified           | 2012-03-06 21:37:50.593425
c_id               | 
dda_nickname       | 
dda_account_name   | 
cu_id              | 1
abd_id             | 
449
user100464

(新)自動モードの拡張:\ x auto

Postgresql 9.2の新機能。 PSQLは自動的にレコードを画面の幅に合わせます。以前はモードのオン/オフを切り替えるだけで、必要に応じてモードを切り替える必要がありました。

  • レコードが画面の幅に収まる場合は。 psqlは通常のフォーマットを使います。
  • レコードができない場合は画面の幅に収まりません。 psqlは拡張モードを使用します。

これを使うには\ x auto

PSQLコマンドに関するPostgresql 9.5ドキュメント


ワイドスクリーン、通常のフォーマット:

 id | time  |       humanize_time             | value 
----+-------+---------------------------------+-------
  1 | 09:30 |  Early Morning - (9.30 am)      |   570
  2 | 11:30 |  Late Morning - (11.30 am)      |   690
  3 | 13:30 |  Early Afternoon - (1.30pm)     |   810
  4 | 15:30 |  Late Afternoon - (3.30 pm)     |   930
(4 rows)

狭い画面、拡張フォーマット

-[ RECORD 1 ]-+---------------------------
id            | 1
time          | 09:30
humanize_time | Early Morning - (9.30 am)
value         | 570
-[ RECORD 2 ]-+---------------------------
id            | 2
time          | 11:30
humanize_time | Late Morning - (11.30 am)
value         | 690
-[ RECORD 3 ]-+---------------------------
id            | 3
time          | 13:30
humanize_time | Early Afternoon - (1.30pm)
value         | 810
-[ RECORD 4 ]-+---------------------------
id            | 4
time          | 15:30
humanize_time | Late Afternoon - (3.30 pm)
value         | 930

Psqlを\ x autoで起動する方法

ホームフォルダの\x autoに追加してpsqlを再起動して、起動時に.psqlrcコマンドを設定します。 詳細はpsqlドキュメントの 'Files'セクションをご覧ください

〜/ .psqlrc

\x auto
225
not a patch

あなたにはたくさんの選択肢があります、どうやって混乱させることができますか:-)?主なコントロールは以下のとおりです。

# \pset format
# \H
# \x
# \pset pager off

それぞれに他の人との選択肢や相互作用があります。最も自動なオプションは以下のとおりです。

# \x off;\pset format wrapped
# \x auto

新しい "\ x auto"オプションは、 "必要なら"だけ行単位の表示に切り替えます。

-[ RECORD 1 ]---------------
id          | 6
description | This is a gallery of oilve oil brands.
authority   | I love olive oil, and wanted to create a place for
reviews and comments on various types.
-[ RECORD 2 ]---------------
id          | 19
description | XXX Test A 
authority   | Testing

古い "\ pset format wrapped"は、データを画面にきちんと合わせようとするという点では似ていますが、ヘッダーが収まらない場合はunalignedに戻ります。これが折り返しの例です。

 id |          description           |            authority            
----+--------------------------------+---------------------------------
  6 | This is a gallery of oilve     | I love olive oil, and wanted to
    ; oil brands.                    ;  create a place for reviews and
    ;                                ;  comments on various types.
 19 | Test Test A                    | Testing
59
Bryce

おもしろいことに、テーブルを折りたたむことなく水平に見ることができます。 PAGER環境変数を使用できます。 psqlはそれを利用します。あなたが設定することができます

__コードスニペット__

あるいは、コマンドラインですでに利用可能な場合はexport PAGER='/usr/bin/less -S' 、適切な場所が指定されていない場合は単にless -Sとなります。展開された行を表示するには-S。カスタムビューアや他のオプションをそれに渡すことができます。

私はもっ​​と書いた Psql Horizo​​ntal Display

12
Dineshkumar

pspg は高度な表フォーマット、水平スクロール、検索、その他多くの機能を提供するシンプルなツールです。

git clone https://github.com/okbob/pspg.git
cd pspg
./configure
make
make install

それからPAGER変数を必ず更新してください。あなたの~/.bashrc

export PAGER="pspg -s 6" 

-sは配色を表します(1-14)。 pgdgリポジトリ を使っているなら、単純にパッケージをインストールしてください(Debian風ディストリビューションの場合):

Sudo apt install pspg

pspg example

8
Tombart

また、HTML出力のオン/オフを切り替える\ Hを必ずチェックしてください。コンソールで読むのは必ずしも簡単ではありませんが、特に複数行の比較的複雑なデータを表示するためにファイルにダンプする(\ oを参照)、またはエディタ/ブラウザウィンドウに貼り付けるには興味深いです。

7
Wexxor

クエリ出力をHTMLテーブルとして表示するには、zenityを使用できます。

  • まず以下のコードでbashスクリプトを実装します。

    cat> '/tmp/sql.op'; zenity --text-info --html --filename = '/ tmp/sql.op';

    保存してくださいmypager.sh

  • 次に、スクリプトのフルパスを値として設定して、環境変数PAGERをエクスポートします。

    例えば、 - export PAGER = '/ path/mypager.sh'

  • それからpsqlプログラムにログインし、そしてコマンドを実行します\ H

  • そして最後に任意のクエリを実行すると、tabledの出力がhtmlテーブル形式で正確に表示されます。