WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

psqlでのデータベース管理

      2012/12/10

psqlでのデータベース操作

psqlというPostgreSQL付属のコマンドラインプログラムを利用して、データベースを管理することができます。

[postgres] psql    ※引数に接続するデータベース名を指定する。省略すると postgres が使用される

[postgres] psql testdb    ※testdb という名前のデータベースを使用する場合

[postgres] psql -U user1 testdb    ※user1 というユーザでログインして、testdb という名前のデータベースを使用する場合

\lコマンドでデータベースの一覧を表示することができます。

DBname=> \l
        List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
 postgres  | postgres | UTF8
 template0 | postgres | UTF8
 template1 | postgres | UTF8
(3 rows)

デフォルトでは postgres, template0, template1 の3つのデータベースが存在しています。それぞれ、下記のような意味があるようです。

初期化が終わると、データベースクラスタにはpostgresという名前のデータベースが含まれています。このデータベースは、ユーティリティやユーザ、サードパーティ製アプリケーションのデフォルトデータベースとして用意されています。データベースサーバ自身はこのpostgresデータベースの存在を必要としていません。初期化中に他にもtemplate1というデータベースが各クラスタ内に作成されます。その名前から推測できるように、これはその後に作成されるデータベースのテンプレートとして使われます。

ユーザの管理

ユーザを作成する場合は下記コマンドを実行します。

postgres=# create user ユーザ名 [with password 'パスワード'];
CREATE ROLE

ユーザを削除する場合は下記コマンドを実行します。

postgres=# drop user ユーザ名;
DROP ROLE

既存のユーザの一覧を表示するには下記のコマンドを実行します。

postgres=# select usename from pg_user;
 usename
----------
 postgres
(1 row)

psqlメタコマンド

\lや\qなどの接頭辞にバックスラッシュがついたものは psql 自身によって実行される、 psql のメタコマンドです。
下表は主なpsqlメタコマンドです。

コマンド 機能
\? psqlコマンドの一覧を表示する
\h SQLコマンドの一覧を表示する
\h SQLコマンド名 SQLコマンドの使い方を表示する
\l データベースの一覧を表示する
\dt 表の一覧を表示する
\d 表名 表の項目一覧を表示する
\dT 項目の型の一覧を表示する
\dS システム表の一覧を表示する
\copy table {from | to} ファイル名 表をファイルにコピーする
\i ファイル名 指定したファイル内のSQLを実行する
\! OSコマンド OSのコマンドを実行する
\q psqlを終了する

 - PostgreSQL , ,