5.1 対話型ターミナル

PostgreSQLのターミナル型フロントエンドpsqlは、対話的にSQL文を入力してサーバで実行し、その結果を確認することができるアプリケーションです。また、psqlはファイルとの間でSQL文やデータの入出力が可能で、各種のメタコマンドをサポートしています。

psqlコマンド

psqlは、OSのシェルから起動します。通常、/usr/binディレクトリにインストールされているため、すべてのユーザが利用できます。起動方法は以下の通りです。

psql [オプション ...] [データベース名 [ユーザ名]]
  • データベース名は、接続するデータベースの名前です。省略時は、コマンドを起動しているユーザ名と同じ名前のデータベースになります。
  • ユーザ名は、データベースに接続するユーザの名前です。省略時は、コマンドを起動しているユーザ名になります。
  • オプションは、データベースへの接続、入出力、その他多岐にわたるpsql起動時のオプションを指定できます。主なものを以下に示します。
オプション 省略値 説明
--host= (-h) Unixドメインソケット サーバを実行しているマシンのホスト名
またはUnixドメインソケットのディレクトリ
--port= (-p) 5432 サーバが接続監視を行っているTCPポート
--dbname= (-d) OSのユーザ名 接続するデータベースの名前
--username= (-U) OSのユーザ名 接続するユーザの名前
--file= (-f) 標準入力 指定したファイルからコマンドを入力
--output= (-o) 標準出力 指定したファイルに全ての結果を出力
--command= (-c)   実行するコマンド文字列。このオプションは繰り返しが可能
--list (-l)   利用可能な全てのデータベースを一覧表示して終了
--version (-V)   psqlのバージョンを表示して終了
--help (-?)   psqlに関するヘルプを表示して終了


例えば、localhostのossdbデータベースにsatoユーザでTCP/IP接続する場合は、以下のように指定します。

psql -h localhost -U sato ossdb


psqlを起動してデータベースへの接続が完了すると、'%/%R%x%# 'の形式のプロンプトを表示してコマンドの入力を受け付けます。

  • %/は、接続しているデータベース名前です。
  • %Rは、コマンドの状態です。先頭行(=)、継続行(-)、その他があります。
  • %xは、トランザクションの状態です。トランザクション内(*)、失敗したトランザクション内(!)で、トランザクション外は空文字です。
  • %#は、ユーザの状態です。スーパーユーザ(#)、その他のユーザ(>)です。

例えば、'ossdb=*# 'は、ossdbにスーパーユーザで接続したトランザクション内で次のコマンドを待っていることを示します。

psqlで使用可能なコマンドには以下の種類があります。

コマンドの種類 入力形式 説明
SQL文 末尾にセミコロン(;)を付与 SQL文をサーバに送り、実行させる
セミコロンの代わりにメタコマンドの \g も可
メタコマンド 先頭にバックスラッシュ(\)を付与 psql自身がクライアント側で実行する
ただし、必要な場合はサーバにアクセスする
help help ヘルプを簡潔に表示する
exit exit または Ctrl-D psqlを終了する
メタコマンドの \q と同じ

 

メタコマンド

psqlの主なメタコマンドを以下に示します。

メタコマンド 主要パラメータ 説明
\c (\connect) [接続情報] データベースへの新規接続を確立する
接続情報は、データベース名 [ユーザ名 [ホスト名 [ポート]]]
\conninfo   データベース接続に関する情報を出力する
\copy 詳細は後述 クライアント(フロントエンド)コピーを行う
\d [パタン] パタンに一致する表またはビュー等の情報を表示する
\du [パタン] パタンに一致するロール(ユーザ)の情報を表示する
\echo 文字列 [...] 文字列の評価結果を表示する
\g   入力されたSQL文をサーバに送って実行する
\h (\help) [SQL文] SQL文の構文に関するヘルプを表示する
\i (\include) ファイル名 標準入力の代わりにファイルから入力する
\l (\list) [パタン] パタンに一致するデータベースの情報を表示する
\o (\out) ファイル名 標準出力の代わりにファイルへ出力する
\password [ユーザ名] ユーザのパスワードを変更する
\q (\quit)   psqlを終了する
\? [トピック] psqlのトピックに関するヘルプを表示する
\! [コマンド] OSのシェルコマンドを実行する

メタコマンドは上記以外にも多数あります。詳細はマニュアルで確認してください。