Ubuntu14.04でpsqlrcを使用してPostgreSQLプロンプトをカスタマイズする方法
序章
psqlrcファイルは、psql対話型コマンドラインクライアントの動作をカスタマイズします。 psqlを使用すると、クエリをインタラクティブに入力し、PostgreSQLに発行して、クエリの結果を確認できます。 このファイルには次の3つの種類があります。
- システム全体のpsqlrcファイルは、PostgreSQLのシステム構成ディレクトリにあります。
このディレクトリの場所はPostgreSQLのインストールによって異なりますが、pg_configツールを使用して見つけることができます。
pg_config --sysconfdir
- ユーザーのpsqlrcファイルは、ユーザーのホームディレクトリにあるか、作成できます。
touch ~/.psqlrc
- 複数のPostgreSQLがインストールされている場合は、バージョン固有のpsqlrcファイルを作成できます。 最後にバージョン番号を追加するだけです。
touch ~/.psqlrc-9.1
touch ~/.psqlrc-9.3
インストール
psqlを使用する前に、PostgreSQLがインストールされている必要があります。
sudo apt-get install -y postgresql postgresql-contrib
これにより、PostgreSQL9.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は、単一行モード(^)または切断(!)のどちらであるかを示しますが、通常は=
- %# 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は、「=」ではなく「-」で表されます
ホスト名「trident」をユーザー「john」として使用し、データベース「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キーワードを大文字または小文字で入力するには、COMP_KEYWORD_CASEオプションを大文字または小文字のオプションで設定できます。
\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エクスペリエンスを改善するための良いスタートになるはずです。