PostgreSQL

最終更新日時:2010-06-03 00:00:00

PostgreSQLとは


PostgreSQL はオープンソースな RDB システムです。
オープンソースなので商用ではないですが、非常に安定していますし、高機能で検索等もかなり高速です。
Oracle と比較すると、信頼性やパフォーマンスでやや劣るとは思われますが、それほどシビアに信頼性やパフォーマンスを求めない用途であれば十分すぎるほどの機能を持っています。
PostgreSQLは、個人用途はもちろんですが、場合によっては商用でも十分使うに値するDBです。

インストール


postgresql-8.2.3の例です。
※8.4.4でも同様

まず、PostgreSQL 用のユーザーを作成しておきます。
DB の作成/削除・DB ユーザーの作成・DB の起動等の PostgreSQL のスーパーユーザー作業はこのユーザで行うことになります。

 # useradd postgres -d /usr/local/pgsql 


ユーザーが作成できたら日本PostgreSQLユーザー会あたりからPostgreSQLのアーカイブを取得し、展開します。

 % gzip -dc postgresql-8.2.3.tar.gz |tar xvf -
 % cd postgresql-8.2.3


あとはお決まりのパターン。

 % ./configure
 % make
 % make check
 % su
 # make install


configure で --with-java を指定すると、 PostgreSQL 用の JDBC が作成され、share/java の下に postgresql.jar がインストールされます。
ただし、JDBC のビルドには JDK, Ant が必要となるので、前もってインストールしておく必要があります。

※ 7.x までは--enable-syslog を指定すると、syslog に対応します。8.xでは不要になった模様
※ 7.2.xまでは configure 時に --enable-multibyte=EUC_JP --no-localeを指定したものでしたが、7.3以降ではデフォルトで multibyte 対応、locale 対応が有効になりました。また、--no-locale を指定するとエラーになります

初期設定


初期設定はpostgresユーザーにて行います。

 % su - postgres


まずは、データベースクラスタを作成します。

 % initdb --no-locale -D /usr/local/pgsql/data 


デフォルトのエンコーディングを明示的に設定したければ、--encoding=EUC_JP等を指定します。

起動方法


PostgreSQL はpostgresユーザーで以下のようにして起動します。

 % postmaster -D /usr/local/pgsql/data & 


もしくは、

 % pg_ctl -D /usr/local/pgsql/data start


TCP/IP通信を有効にする場合、通常はpostgresql.confで設定しますが、コマンドラインオプションで有効にしたい場合には以下のように実行します。

 % postmaster -i -D /usr/local/pgsql/data & 


サーバ起動時に自動的に PostgreSQLを起動させる


contrib/start-scripts/linux に起動スクリプトの雛形があるので、これを適宜編集して利用可能です。
CentOS-4.4では編集無しでも動くことを確認しています。

 # cp contrib/start-scripts/linux /etc/init.d/postgres
 # chmod 755 /etc/init.d/postgres
 # chkconfig --add postgres
 # /etc/init.d/postgres start


編集無しの場合、ログが $PGDATA/server.logに出力されるので、ログの出力場所を変えたい等の場合には編集した方がよいかと思います。

DBの基本操作


DB を操作するためには、まず初めにDB用のユーザーを作成します。
既に、postgres というユーザーが作成されていますが、このユーザーはDB内ではスーパーユーザーに相当するので、通常は対象 DB を扱うためのユーザを1つ以上作成し、適宜、DB 作成権限、ユーザ作成権限を付与します。

 % createuser username 


ユーザーにパスワードを設定したい場合にはpsql上にて以下のようにします。

 % psql
 => ALTER USER username encrypted password 'passpass';


削除する場合には以下のようにします。

 % dropuser username 


ユーザを作成したら、そのユーザにて DB を作成します。

 % createdb -U username dbname


ちなみに削除は以下のとおり。

 % dropdb -U username dbname 


設定


PostgreSQL では様々な設定ができますが、代表的なものを1つだけ紹介しておきます。
他サーバからのDBを参照することができるように、TCP/IPによる通信に対応させたいことが多々ありますが、その場合には、data/postgresql.conf に以下の記述を行います。

 tcpip_socket=true


PostgreSQLを再起動します。

※上記は古いバージョンでのみ有効です。
※最近のバージョンでは、listen_addressesを設定することにより、TCP/IPによる通信が可能となります

Windowsからの接続

Windows 系から PostgreSQL に対して接続をするには、PostgreSQL 用の ODBC ドライバが必要となります。
PostgreSQL 用の ODBC ドライバは本体には含まれていますが、日本語版が PostgreSQL ODBC Driver 日本語版で公開されているので、こちらから取得します。(バイナリもあるので、Windows 上の開発環境の無い場合でも PostgreSQL に Windows からアクセスできます)

psql


PostgreSQLのコマンドラインでの操作はpsqlを使用します。

 % psql -U username dbname


-f の後にSQLファイルを指定することで、指定したデータベースに指定したSQLを実行することが出来ます。

 % psql -U username -f insert.sql dbname


以下は、psqlでの主な操作です。

操作内容コマンド
テーブル、シーケンス、インデックス等の情報を表示\d
\d table_name
\d sequence_name
\d index_name
関数情報表示\df
\df abs
現在存在するデータベース一覧\l
SQL のヘルプ\h
\h sql
PSQL メタコマンドのヘルプ\?
\? psql_meta_command
出力結果のファイル出力\o filename
PSQL モード終了\q
^D


リンク


サイト名概要
PostgreSQL information page様々な情報があります
PostgreSQL 日本語マニュアルPostgreSQL の日本語マニュアルがあります


お問い合わせは 掲示板 にて。