PostgreSQLスキルアップノート(自己啓発のための個人サイト)
データベースの作成
【一覧に戻る】
マニュアルへのリンクは/9.2/としています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ データベースの作成
■■■■
■■■■
■■■■ 2012/11/27
■■■■ 使用環境:PostgreSQL9.1.4 (CentOS6.2)
(C) 2012 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
データベースクラスタの中にデータベースを作成する方法。
ここではcreatedbコマンドを使った方法を中心に記載する。
【マニュアル】
・データベース管理−データベースの作成→●[マニュアル]
・CREATE DATABASE→●[マニュアル]
・createdb→●[マニュアル]
【参考記事】
なし
■1■ データベースの作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
createdbコマンドはOSのコマンドラインから実行する。
createdbコマンドは中でCREATE DATABASE文を呼び出すラッパコマンドである。
【□】 su - postgres
【□】 createdb database2 -D tablespace02
主なパラメータ(カッコ内は指定しない場合のデフォルト)
-D tablespace そのDBのデフォルトのテーブルスペース。 (pg_default)
-O owner データベースの所有者。 (実行時のデータベースユーザ)
-T template 使用するテンプレートつまりコピー元DB。 (template1)
【注意】上の例ではテンプレートを-Tで指定していないのでtemplate1がベースとなる。
通常の初期構築はこの方法を用いる。
template1にもし独自にオブジェクトを作成している場合にはその内容がすべて
コピーされるので注意。
【注意】テンプレートとなるDBはロックされる。
通常template1なら問題になることはないが、利用中のDBをテンプレートにすると
きは特に注意。
【注意】指定文字列(dbnameなど)はcreatedbコマンドからCREATE DATABASEに渡される時、
ダブルクォーテーションが付けられるため大文字小文字に注意すること。
createdb database2とcreatedb DATABASE2 は別物として扱われる。
【参考】その他の指定
・データベースエンコーディング等の指定も可能。
指定しない場合はinitdb時の指定(DBクラスタデフォルト)に従う。
・-hや-Uなどの接続パラメータの指定も可能。
■2■ データベースの確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
以下によりDB構築後の確認を行う。
【□】 psql -c '\l+'
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 | サイズ | テーブルスペース | 説明
-----------+----------+------------------+----------+-------------------+-----------------------+---------+------------------+--------------------------------------------
database1 | postgres | UTF8 | C | C | | 988 MB | pg_default |
database2 | postgres | UTF8 | C | C | | 6161 kB | tablespace02 |
postgres | postgres | UTF8 | C | C | | 121 MB | pg_default | default administrative connection database
template0 | postgres | UTF8 | C | C | =c/postgres +| 6161 kB | pg_default | unmodifiable empty database
| | | | | postgres=CTc/postgres | | |
template1 | postgres | UTF8 | C | C | =c/postgres +| 6161 kB | pg_default | default template for new databases
| | | | | postgres=CTc/postgres | | |
【参考】日常よく使う確認方法は psql -l
普段はデータベース一覧表示として以下の方法を用いる。
ただしこの方法ではデフォルトのテーブルスペースなどの詳細が出力されない。
[postgres@pg91 tmp]$ psql -l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
-----------+----------+------------------+----------+-------------------+-----------------------
database1 | postgres | UTF8 | C | C |
database2 | postgres | UTF8 | C | C |
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
■3■ その他
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1.作成コマンド、削除コマンドはそれぞれ2種類
──────────────────────────────
詳細はマニュアルを参照
作成コマンド2種
・CREATE DATABASE
・createdb
削除コマンド2種
・DROP DATABASE
・dropdb
2.一部のDBだけパラメータのデフォルト値を変更する方法
──────────────────────────────
パラメータのデフォルトをデータベース単独で変える方法。
postgresql.confの設定はDBクラスタ共通であり、1個のDBだけ変更するということが不可能なのでこれを使う。
ただし、用途としては試験的な利用に限るべき。
データベースの設定→●[マニュアル]
【□】 ALTER DATABASE mydb SET geqo TO off;
以上