psqlからPostgreSQLへ接続する

PostgreSQLに対してSQLを実行する手段はいろいろありますが、ここではpsqlというSQLインタプリタプログラムを利用していきます。

psqlは、PostgreSQLに標準で付属しており、PostgreSQLをインストールした環境であれば、すぐに利用できます。

今回は、psqlでPostgreSQLに接続し、データベースに関する情報を表示する手順について見ていきます。

psqlからデータベースへの接続

Linux版のPostgreSQLの場合であれば、シェル上からpsqlコマンドを実行します。

psqlコマンド
psql -U <データベースユーザー名> <データベース名>

-Uオプションでデータベースのユーザー名を指定し、引数としてデータベース名を指定します。psqlコマンドでよく使われるオプションとして以下のようなものがあります。

オプション 説明
-l データベース一覧を表示する。コマンド実行後、データベースに接続したままにならず、プロンプトに戻る。
-c ‘コマンド’ 引数で指定したSQLコマンドを実行し、結果を表示する。コマンド実行後、データベースに接続したままにならず、プロンプトに戻る。
-f ファイル名 引数で指定したファイルの中身をSQLとして実行する。コマンド実行後、データベースに接続したままにならず、プロンプトに戻る。
-p ポート番号 接続するPostgreSQLのポート番号を指定する。
-h ホスト名 接続するPostgreSQLのホスト名を指定する。

では、実際にpsqlを利用してデータベースに接続してみましょう。今回はpostgresユーザーでtemplate1データベースに接続します。

# su - postgres
$ psql -U postgres template1

コマンド実行後は、指定したデータベース(template1)への接続に成功したら、プロンプトが以下のように変わります。

template1=#

このプロンプトになっている間はデータベース(template1)に接続していることを示します。この状態になれば、直接SQLを実行することが可能となります。

また、プロンプトの最後が「=#」になっていますが、この意味は接続したユーザーがスーパーユーザーであることを表しています。一般ユーザーで接続した場合は「=>」になります。

データベースに関する情報表示

SQLを実行する前に、まず接続したデータベースにどのようなテーブルやインデックスがあるのかを確認する方法について見ていきましょう。

データベースに関する情報は、psqlで実装されているバックスラッシュコマンドで参照できます。例えば、定義されているテーブルを確認するには「\d」コマンドを実行します。

template1=# \d

よく使用されるバックスラッシュコマンドとして以下のようなものがあります。

バックスラッシュコマンド 説明
\? バックスラッシュコマンドヘルプを表示
\h SQLヘルプを表示
\q psqlを終了
\l データベースの一覧を表示
\dn スキーマの一覧を表示
\d テーブル、インデックス、シーケンス、ビューの一覧を表示
\dt テーブルの一覧を表示
\di インデックスの一覧を表示
\ds シーケンスの一覧を表示
\dv ビューの一覧を表示
\dS システムテーブルの一覧を表示
\du データベースユーザーの一覧を表示
\df 関数の一覧を表示
\r 入力途中のクエリのリセット
\timing SQL実行時間計測表示のON/OFF

他にもいろいろあり覚えるのが大変かもしれませんが、どのようなことが確認できるのかをおさえておき、バックスラッシュコマンドヘルプを表示するコマンドを最低限覚えておきましょう。