開発者ドキュメント

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

序章

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

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

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

pg_config --sysconfdir
  1. ユーザーのpsqlrcファイルは、ユーザーのホームディレクトリにあるか、作成できます。
touch ~/.psqlrc
  1. 複数の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 '

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

[trident]:5432 john@orange=>

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

postgres-#

クエリが完了していない場合は、セカンダリプロンプトが表示されます。

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

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

\set PROMPT2 '%M %n@%/%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を次のように変更します。

表示オプション

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エクスペリエンスを改善するための良いスタートになるはずです。

モバイルバージョンを終了