PostgreSQL | psql を使用して PostgreSQL に接続 | psql オプションの使い方とオプション一覧
psql を実行するときには、接続に使用するユーザー名やデータベースを指定するオプション以外にも、いくつかのオプションが用意されている。ここでは、psql の実行時に指定できるオプションの使い方とオプション一覧について説明する。
psql を実行するときによく使用するオプションは、PostgreSQL に接続するときに使う -h と -U だが、それ以外にもいくつかのオプションが用意されている。
バージョンを確認する
-V オプションで PostgreSQL のバージョンを表示できる。
psql -V
C:\>psql -V
psql (PostgreSQL) 12.2
C:\>
オプション一覧とヘルプを表示する
-? はオプション一覧とヘルプを表示するオプションである。
C:\>psql -?
psql は PostgreSQL の対話式ターミナルです。
使用方法:
psql [OPTION]... [DBNAME [USERNAME]]
一般オプション:
-c, --command=COMMAND 1 つのコマンド(SQL または内部コマンド)だけを実行して終了
-d, --dbname=DBNAME 接続するデータベース名(既定値: "devkuma")
-f, --file=FILENAME ファイル内に指定したコマンドを実行して終了
-l, --list 使用可能なデータベース一覧を表示して終了
-v, --set=, --variable=NAME=VALUE
psql 変数 NAME に VALUE を設定
(例: -v ON_ERROR_STOP=1)
-V, --version バージョン情報を表示して終了
-X, --no-psqlrc 起動ファイル(~/.psqlrc)を読み込まない
-1 ("one"), --single-transaction
コマンドファイルを 1 つのトランザクションとして実行
-?, --help[=options] このヘルプを表示して終了
--help=commands psql 内部コマンド(\ で始まるもの)を表示して終了
--help=variables 特別な変数を表示して終了
入出力オプション:
-a, --echo-all スクリプトのすべての入力を表示
-b, --echo-errors 失敗したコマンドを出力
-e, --echo-queries サーバーに送信したコマンドを表示
-E, --echo-hidden 内部コマンドが生成するクエリを表示
-L, --log-file=FILENAME セッションログをファイルへ送信
-n, --no-readline 拡張コマンドライン編集機能(readline)を無効化
-o, --output=FILENAME クエリ結果をファイル(または |パイプ)へ送信
-q, --quiet 静かに実行(メッセージなしでクエリ結果のみ表示)
-s, --single-step シングルステップモード(各クエリを確認)
-S, --single-line 1 行モード(行末で SQL コマンドを終了)
出力形式オプション:
-A, --no-align 整列しない表形式の出力モード
--csv CSV (カンマ区切りデータ) の表出力モード
-F, --field-separator=STRING
unaligned 出力用のフィールド区切り文字を設定(既定値: "|")
-H, --html HTML 表形式の出力モード
-P, --pset=VAR[=ARG] 表示オプション VAR に ARG を設定(\pset コマンド参照)
-R, --record-separator=STRING
unaligned 出力用のレコード区切り文字を設定
(既定値: 改行文字)
-t, --tuples-only 行だけを表示
-T, --table-attr=TEXT HTML table タグの属性を設定(例: width, border)
-x, --expanded 拡張表形式で出力
-z, --field-separator-zero
unaligned 出力用のフィールド区切り文字を 0 バイトに指定
-0, --record-separator-zero
unaligned 出力用のレコード区切り文字を 0 バイトに指定
接続オプション:
-h, --host=HOSTNAME データベースサーバーのホストまたはソケットディレクトリ
(既定値: "ローカルソケット")
-p, --port=PORT データベースサーバーのポート(既定値: "5432")
-U, --username=USERNAME データベースユーザー名(既定値: "devkuma")
-w, --no-password パスワードプロンプトを表示しない
-W, --password パスワード入力プロンプトを表示(通常は自動で処理)
詳しくは、psql 内で "\?"(内部コマンド) または "\help"(SQL
コマンド) を入力するか、PostgreSQL
ドキュメントの psql セクションを参照してください。
バグ報告: <pgsql-bugs@lists.postgresql.org>.
C:\>
結果表示に HTML テーブルタグを使用するよう指定する
psql を使用して PostgreSQL に接続した後の表示方法に関するオプションもある。たとえば、PostgreSQL に接続した後でデータベース一覧を表示すると、次のように表示される。
C:\>psql -U postgres
postgres ユーザーのパスワード:
psql (12.2)
ヘルプを表示するには "help" と入力してください。
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | Collate | Ctype | アクセス権限
-----------+----------+------------------+------------------+------------------+-----------------------
postgres | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 |
template0 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
postgres=#
-H オプションを使用して psql を起動し PostgreSQL に接続すると、同じデータベース一覧を HTML テーブルタグを使用した形式で出力できる。
C:\>psql -H -U postgres
postgres ユーザーのパスワード:
psql (12.2)
ヘルプを表示するには "help" と入力してください。
postgres=# \l
<table border="1">
<caption>データベース一覧</caption>
<tr>
<th align="center">名前</th>
<th align="center">所有者</th>
<th align="center">エンコーディング</th>
<th align="center">Collate</th>
<th align="center">Ctype</th>
<th align="center">アクセス権限</th>
</tr>
<tr valign="top">
<td align="left">postgres</td>
<td align="left">postgres</td>
<td align="left">UTF8</td>
<td align="left">Korean_Korea.949</td>
<td align="left">Korean_Korea.949</td>
<td align="left"> </td>
</tr>
<tr valign="top">
<td align="left">template0</td>
<td align="left">postgres</td>
<td align="left">UTF8</td>
<td align="left">Korean_Korea.949</td>
<td align="left">Korean_Korea.949</td>
<td align="left">=c/postgres<br />
postgres=CTc/postgres</td>
</tr>
<tr valign="top">
<td align="left">template1</td>
<td align="left">postgres</td>
<td align="left">UTF8</td>
<td align="left">Korean_Korea.949</td>
<td align="left">Korean_Korea.949</td>
<td align="left">=c/postgres<br />
postgres=CTc/postgres</td>
</tr>
</table>
<p>(3 行)<br />
</p>
postgres=#
ここで示したデータベース一覧だけでなく、他の検索結果も HTML のテーブルタグを使用した形式で出力される。
postgres=# select now()
postgres-# ;
<table border="1">
<tr>
<th align="center">now</th>
</tr>
<tr valign="top">
<td align="left">2020-03-15 02:30:16.292241+09</td>
</tr>
</table>
<p>(1 行)<br />
</p>
postgres=#
ファイルを使用して SQL を実行する
-f オプションを使用すると、ファイルを使って SQL を実行できる。
まず、次のように SQL ファイルを作成する。
D:\>copy con file.sql
select now();^Z
1 個のファイルをコピーしました。
作成したファイルを次のように実行すると、出力結果を確認できる。
D:\>psql -U postgres -f file.sql
postgres ユーザーのパスワード:
now
-------------------------------
2020-03-15 02:39:17.327284+09
(1 行)
D:\>
–
このように psql のオプションにはさまざまな機能が用意されているため、後でオプション一覧を確認し、何ができるかを把握しておくと便利に使える。