PostgreSQLの使い方メモ

提供: Astarisk Works Wiki

目次

インストール

PostgreSQLのインストールを参照。

psqlの使い方

SQLファイルを実行する

>psql -f SQLファイル -U 接続ユーザ名 -p 接続ポート 接続DB名

テーブルの一覧を見る

CURRENT_DB=>\z
Access privileges for database "DB_NAME"
 Schema | Name | Type | Access privileges 
--------+------+------+-------------------

\dを使うとテーブルのオーナーも表示される。

CURRENT_DB=> \d
                     List of relations
 Schema |             Name             |   Type   |  Owner   
--------+------------------------------+----------+----------

バキューム

>vacuumdb -d 対象DB名 -p 接続ポート -U 接続ユーザ名 -W

バックアップ・リストア

バックアップ

カスタムアーカイブ形式でダンプを出力する場合の例

>pg_dump -F c -h 接続ホスト名 -p 接続ポート名 -f 出力ファイル名 対象DB名

リストア

カスタムアーカイブをリストアする場合の例

>pg_restore -F c -U 接続ユーザ名 -d 対象DB名 -p 接続ポート名 バックアップダンプファイル名

ユーザの管理

ユーザの一覧を見る

psql> select usename from pg_user;

データベースユーザ/ロール一覧を見る

psql>\du
                              List of roles
 Role name  | Superuser | Create role | Create DB | Connections | Member of 
------------+-----------+-------------+-----------+-------------+-----------

ユーザを登録する

>createuser ユーザ名

パスワードを設定するには次のコマンドをpsqlで実行する。
ユーザ名に大文字を使っているときにはダブルクオートで囲む。

>alter user "ユーザ名" with password '<パスワード>';

環境変数

次の環境変数はpsqlの動作に影響する。設定することで便利に使える。

環境変数 説明
PGPORT 接続するDBインスタンスの待ち受けポートを指定する。デフォルトの5432以外に変更している場合には設定しておくと便利
PGUSER
接続するときに利用するユーザを指定する
PGDATABASE
デフォルトの接続DBを設定する

シェル等からSQLを実行するときにパスワードをパスする

次のように環境変数を設定してからpsqlを実行する。

スクリプト中にパスワードを書いてしまうのでセキュリティ上のいいかわるいかは属する組織で判断必要。

PGPASSWORD=○○○ /usr/local/pgsql/bin/psql -U postgres -h xxx.xxx.xxx.xxx testdb

パスワードファイルを使う方法もあるらしい。

個人用ツール