PostgreSQL
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 の日本語マニュアルがあります |
PostgreSQL の一覧
PostGIS
2010-06-08 15:54
PostfixとPostgreSQLの連携
2010-03-08 19:24
PostgreSQL:VACUUM
2010-03-15 19:01
PostgreSQL:雑多なメモ
2010-04-14 16:18
PostgreSQLのバージョンアップ
2010-06-03 20:39
SQL:条件付きソート
2017-02-15 15:59
PostgreSQL:バックスラッシュの扱い
2011-11-25 13:56
SELECT:複数行に対してAND条件を指定
2012-11-27 16:11
PostgreSQL:CREATE TABLE時のダブルクォートについて
2013-01-30 19:22
PostgreSQL:複数行の結果をまとめて1行として表示する
2014-04-04 15:53
PostgreSQL:ログ設定
2014-04-10 18:16
FuelPHP の orm で delete した際に LIMIT が付いてしまってエラーになる場合の対応
2017-02-08 00:00
FuelPHP+PostgreSQLでORMを使うとINSERT時にIDが取得できない
2017-04-28 14:55