Postgres インストール

Windows環境へのPostgresのインストール手順と設定

Postgres9のダウンロード

EnterpriseDBからDownload PostgreSQLに移動し、 32ビットはWin x86-32、 64ビットはWin x86-64の最新のexeファイル(postgresql-9.1.5-1-windows.exe)をダウンロード。

インストール

exeをダブルクリックし、インストーラーを起動。

SetUp - PostgreSQL Next >

Installation Directory
Installation Directory 「C:\Program Files\PostgreSQL\9.1」 を設定 Next >

Data Directory
Installation Directory 「C:\Program Files\PostgreSQL\9.1\data」 を設定 Next >

Password
Password、Retype password を設定 Next >

Port
Port 「5432」 を設定 Next >

Advanced Options
Local 「Japanease, Japan」 を設定 Next >

Ready to Install
Next >

Completeing the PostgreSQL Setup Wizard
Finish

DBの作成

コマンドプロンプトを立ち上げ、コマンドが実行できるディレクトリへ移動。

cd C:\Program Files\PostgreSQL\9.1\bin

テストDBを作成、パスワードを入力。

createdb -U postgres testdb

テストDBに接続、パスワードを入力。

psql -U postgres testdb
testdb=# \l testdb データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 --------+----------+------------------+--------------------+--------------------+------------ testdb | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 |

テストテーブルを作成。

CREATE TABLE test ( test_name text,--名前 test_datetime timestamp NOT NULL default now()--時間 );
testdb=# \d test テーブル "public.test" 列 | 型 | 修飾語 ---------------+-----------------------------+------------------------ test_name | text | test_datetime | timestamp without time zone | not null default now()

テストデータをINSERT。

INSERT INTO test (test_name) VALUES ('foo'); INSERT INTO test (test_name) VALUES ('baz'); INSERT INTO test (test_name) VALUES ('bar');

SELECTで確認。

SELECT * FROM test;
testdb=# SELECT * FROM test; test_name | test_datetime -----------+------------------------- foo | 2012-11-15 12:00:00.359 bar | 2012-11-15 12:00:00.359 baz | 2012-11-15 12:00:00.375 (3 行)

php.iniの設定

拡張機能(dll)を有効化

extension=php_pgsql.dll

Windows版 PHP5.2.6以降のphp_pgsql.dllは壊れているため、PHP5.2.5のphp_pgsql.dllを取得し、元のphp_pgsql.dllに上書きする必要あり。

C:\php-5.4.5下のlibpq.dllをパスの通っているディレクトリ(一般的にはC:\WINDOWS\system32下)にコピー。

PHPからDBに接続

PHP

// 接続 $conn = pg_connect("host=localhost port=5432 dbname=testdb user=postgres password=postgres"); if (! $conn) { echo "接続エラー"; exit; } // 実行 $result = pg_query($conn, "select * from test"); if (! $result) { echo "実行エラー"; exit; } // 取得 while ($row = pg_fetch_row($result)) { echo $row[0] . "\n"; echo $row[1] . "\n"; }

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。
主にLAPP環境でPHPを書いています。
最近はjQueryをよく書いています。