399

UbuntuでPostgreSQL8.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設定はありますか?

4

8 に答える 8

676

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

\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             | 
于 2012-03-07T16:12:16.757 に答える
330

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

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

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

これを使用するには:\ x auto

Postgresql9.5PSQLコマンドに関するドキュメント。


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

 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

\ x autoでpsqlを開始する方法は?

コマンドをホームフォルダに追加してpsqlを再\x auto起動することにより、起動時にコマンドを構成します。詳細については、psqlドキュメントの「ファイル」セクションを参照してください.psqlrc

〜/ .psqlrc

\x auto
于 2013-04-19T16:06:04.567 に答える
88

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

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

それぞれにオプションがあり、他との相互作用があります。最も自動化されたオプションは次のとおりです。

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

新しい「\xauto」オプションは、「必要な場合」にのみ行ごとの表示に切り替わります。

-[ 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

古い「\psetformatwrapped」は、データを画面にきちんと収まろうとするという点で似ていますが、ヘッダーが収まらない場合は、整列されていない状態にフォールバックします。ラップされた例を次に示します。

 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
于 2013-05-16T18:48:34.897 に答える
31

興味深いのは、テーブルを折りたたむことなく水平に表示できることです。PAGER環境変数を使用できます。psqlはそれを利用します。設定できます

export PAGER='/usr/bin/less -S'

またはless -S、適切な場所にない場合は、コマンドラインですでに使用可能である場合。-Sは、展開された線を表示します。カスタムビューアやその他のオプションを渡すことができます。

Psql水平表示でもっと書いた

于 2015-11-26T11:03:02.410 に答える
27

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の例

于 2018-02-16T23:28:12.413 に答える
7

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

于 2012-08-01T00:00:30.453 に答える
6

command-line mode私のようなpsqlを探しているなら、

これが構文です--pset expanded=auto

psqlコマンドラインオプション:-P Expanded
= auto
--pset Expanded = auto
-x
--expanded
.. ..

別の方法は-qオプション参照です

于 2020-12-22T04:14:24.297 に答える
1

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

  • まず、次のコードを使用してbashスクリプトを実装します。

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

    mypager.shのように保存します

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

    例:-export PAGER ='/path/mypager.sh'

  • 次に、psqlプログラムにログインし、コマンド\Hを実行します。

  • そして最後にクエリを実行すると、テーブル化された出力がhtmlテーブル形式でzenityで表示されます。

于 2016-11-30T13:04:59.960 に答える