Ubuntu 14.04でpsqlrcを使用してPostgreSQLプロンプトをカスタマイズする方法

前書き

psqlrcファイルは、psqlインタラクティブコマンドラインクライアントの動作をカスタマイズします。 psqlを使用すると、クエリを対話形式で入力し、PostgreSQLに発行して、クエリ結果を確認できます。 ファイルには3つのフレーバーがあります。

1)システム全体のpsqlrcファイルは、PostgreSQLのシステム構成ディレクトリにあります。

このディレクトリの場所は、インストールされているPostgreSQLによって異なりますが、pg_configツールを使用して見つけることができます。

pg_config --sysconfdir

2)ユーザーのpsqlrcファイルが見つかるか、ユーザーのホームディレクトリに作成できます。

touch ~/.psqlrc

3)PostgreSQLが複数インストールされている場合、バージョン固有のpsqlrcファイルを作成できます。 バージョン番号を最後に追加するだけです。

touch ~/.psqlrc-9.1
touch ~/.psqlrc-9.3

インストール

psqlを使用する前に、PostgreSQLをインストールする必要があります。

sudo apt-get install -y postgresql postgresql-contrib

これにより、PostgreSQL 9.3がインストールされます。 これで、postgresユーザーに切り替えてpsqlを起動できます。

su - postgres

psql

これにより、標準のpsqlプロンプトが表示されます。

psql (9.3.4)
Type "help" for help.

postgres=#

プロンプトの編集

ユーザーpsqlrcファイルを編集することにより、メインpsqlプロンプト(PROMPT1)をカスタマイズし、便利なショートカットを作成できます。 選択したエディターで.psqlrcファイルを編集して、次の行を追加します(ここではvimを使用します)。

vi ~/.psqlrc

\set PROMPT1 '%M:%> %n@%/%R%#%x '
  • %Mはデータベースサーバーのホスト名を指します。接続がUnixドメインソケットを介している場合は「[local]」です

  • %>はリスニングポートを指します

  • %nはセッションのユーザー名を指します

  • %/は現在のデータベースを参照します

  • %Rは、シングルラインモード(^)か切断(!)かを示しますが、通常は=

  • %#は、スーパーユーザー(#)か通常ユーザー(>)かを示します

  • %xはトランザクションステータスを指します-トランザクションブロック(*)でない限り、通常は空白です

ホスト名「trident」でユーザー「john」としてマシンにログインし、通常ユーザーとしてデータベース「orange」にアクセスすると、次のように表示されます。

[trident]:5432 john@orange=>

セカンダリpsqlプロンプト(PROMPT2)を編集することもできます。

postgres-#

未完了のクエリがあると、セカンダリプロンプトが表示されます。

postgres=# select * from
postgres-# peel limit 1;

セカンダリpsqlプロンプトの編集は、プライマリpsqlプロンプトの編集とほとんど同じです。

\set PROMPT2 '%M %n@%/%R %# '
  • %Rは、「=」ではなく「-」で表されます

ユーザー「john」としてホスト名「trident」を持ち、通常ユーザーとしてデータベース「orange」にアクセスするマシン上のトランザクションの途中で、

[trident]:5432 john@orange=> select * from
[trident] john@orange-> peel limit 1;

もちろん、これらのオプションを追加、削除、または並べ替えて、役に立つ情報を含めることができます。

プロンプトの色はpsqlrcで編集できます。 ポート番号を赤にするには、次を追加します。

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

使用できる色はさまざまです。値31を次のように変更します。

  • 緑の場合は32

  • 黄色の場合は33

  • 青は34

  • マゼンタの場合は35

  • シアンの場合36

  • 白の場合は37

表示オプション

PostgreSQLデータベースを照会すると、null値は空白を返します。 代わりに、値NULLを返すようにする場合は、nullオプションを編集できます。

\pset null '[null]'

「SELECT」や「FROM」などのSQLキーワードを大文字または小文字として完成させるには、COMPKEYWORDCASEオプションをupperまたはlowerオプションで設定できます。

\set COMP_KEYWORD_CASE upper

タイミングオプションを有効にして、すべてのクエリでクエリ時間を表示するには。

\timing

bashプロンプトのように、psqlプロンプトで上矢印キーを押すと、履歴を介して以前に実行されたコマンドにアクセスできます。 履歴のサイズを設定するには、HISTSIZEを編集できます。

\set HISTSIZE 2000

大きなテーブルをクエリするとき、出力が読みにくいテキストをレンダリングすることがあります。 拡張テーブル形式に切り替えることができます。

\x auto

オプション「default」、「verbose」、または「terse」を使用して、エラーレポートの詳細度を設定することもできます。

\set VERBOSITY verbose

setコマンドでもショートカットを設定できます。 PostgreSQLのバージョンと利用可能な拡張機能を表示するためのショートカットをセットアップする場合は、次を追加します。

\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

psqlプロンプトの起動時にメッセージを表示する場合は、echoコマンドを使用できます。

\echo 'Welcome to PostgreSQL\n'

最後に、psqlrcを編集すると、psqlの起動時に出力が作成されます。 これらを非表示にする場合は、psqlファイルの上部と下部にQUIETフラグを設定します。

要約

完全なファイルは次のとおりです。

\set QUIET 1

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

\set PROMPT2 '%M %n@%/%R %# '

\pset null '[null]'

\set COMP_KEYWORD_CASE upper

\timing

\set HISTSIZE 2000

\x auto

\set VERBOSITY verbose

\set QUIET 0

\echo 'Welcome to PostgreSQL! \n'
\echo 'Type :version to see the PostgreSQL version. \n'
\echo 'Type :extensions to see the available extensions. \n'
\echo 'Type \\q to exit. \n'
\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

psqlを起動すると、別のプロンプトが表示されます。

$ psql

Welcome to PostgreSQL!

Type :version to see the version.

Type :extensions to see the available extensions.

Type \q to exit.

psql (9.3.4)
Type "help" for help.

[local]:5432 postgres@postgres=#

さらに多くのカスタマイズを行うことができますが、これらはpsqlエクスペリエンスを改善するための良い出発点です。