PostgreSQLのページ

(last modified : 2011/04/13)
  1. Postgresとは?
  2. なぜPostgresを使うのか?
  3. Postgresをはじめる前に
  4. PostgreSQLの主なコマンド
  5. データベースのバックアップと復元
  6. PostgreSQLに関するリンク集
  7. 参考文献

Postgresとは?

Postgresとはフリーのデータベースサーバーのひとつです。データベースとは Excelでおなじみの縦横の表のことだと思ってください。データベースサー バーを用いる利点として、データの蓄積、検索が容易にできることが上げら れます。最近ではデータベースサーバーを単独で用いることはほとんどなく、 CGIやASP,PHPなどと組み合わせてWebサーバーを通してブラウザで表示する 形のWebアプリケーションのデータ格納部として使用する例が多いようです。

なぜPostgresを使うのか?

論文や書籍が多くなってくるとデータの保管、検索が難しくなってきます。 そこで、WebDBアプリケーションの典型的な例として、データ入力部、デー タ検索部、データ修正部、データ表示部を持つ論文検索システムの作成を考 案しました。データベースサーバーが必要となったわけですが、Linuxの様々 なディストリビューションで採用されているフリーのデータベースサーバー としてPostgresがありました。PostgresはPHPとの連携も可能で比較的簡単 にWebDBアプリケーションの構築が可能となります。

Postgresをはじめる前に

Postgresをはじめる前に(もちろんPostgresのインストールは終っているも のとします。debian,Redhatなどのディストリビューションではpostgresの パッケージが提供されているので、それを使うと楽にインストールすること ができます。) ユーザとデータベースを作成する必要があります。 UNIXコマンドcreateuserとcreatedbでユーザとデータベースを作成するこ とができます。createuserで作成したユーザでなければ新たにデータベー スを作成することができません。データベースはに作成したユーザー のみが基本的にアクセスを行うことができます(GRANTコマンドを使用すると 別のユーザもデータベースにアクセスすることができるようになります )。createdbはExcelでの新規ファイルの作成と考えるとよいでしょう。 初期状態でcreateuserが実行できるユーザはpostgresだけですので、一旦 rootを経由してユーザpostgresになりましょう。postgresの状態で
$ createuser (ユーザ名)
を実行します。そのとき以下のような質問がありますのでユーザの利便性に 応じてユーザを作成しましょう。例はもしあなたのユーザ名がhogehogeだった 場合のコマンドのやり取りです。
$ createuser hogehoge
Enter user's postgres ID or RETURN to use unix user ID: 1000 ->
(もしunix user IDと異る値を使う場合には数字を入力)
Is user "hogehoge" allowed to create databases (y/n)
(もしユーザにデータベースを作成する権利を与えるならy:通常y)
Is user "hogehoge" a superuser? (y/n)
(もしユーザにユーザを作成する権利を与えるのならy:通常n)
createuser: hogehoge was successfully added
(このメッセージが出たら正常にユーザは作成されたことを意味する)
このように作成したユーザhogehogeでデータベースを作成しましょう。繰り返しに なりますがデータベースとはExcelのファイルに対応するものだと思ってください。
$ createdb (データベース名)
例としてtestdbを作成してみましょう。
$ createdb testdb
データベースが作成されているかの確認はpsql -lコマンドで確認することができます。
datname|datdba|encoding|datpath
---------+------+--------+--------
template1|31|1|template1
testdb|1000|1|testdb

PostgreSQLの主なコマンド

CREATE TABLE (テーブル名)
新しいテーブルを作るコマンド。(テーブル名)はExcelのsheet名と考えればよい。以下の例ではテーブルbookを作成し、カラム名にbookname,keyword,dateの3つを与えている。テーブルの作成は基本的な作業なので、一般にbook.sqlなどとファイル名を付けてファイルとして保管し、テーブルを作る際にpsqlの\iコマンドの引数に book.sqlを与えて読み込ませる。
testdb => \i book.sql
CREATE TABLE book (
bookname varchar(80),
keyword varchar(80),
date date
);
INSERT INTO (テーブル名) VALUES (...)
データベースの各カラムにデータを入力するためのコマンドです。最 も簡単な場合は、値のリストがCREATE TABELで指定したカラムの順序と 一致する時です。
testdb => INSERT INTO book VALUES ('PostgreSQL解説','コンピュータ','10/30/2002');
testdb => INSERT INTO book VALUES ('確率過程入門','確率過程','4/25/2000');
またCREATE TABLEで指定したカラムと異なる順序でデータを入力するこ とやあるカラムを省略してデータを入力することも可能です。
testdb => INSERT INTO book (bookname, date, keyword ) VALUES ('PostgreSQL解説','10/30/2002','コンピュータ');
testdb => INSERT INTO book (bookname, keyword) VALUES ('確率過程入門','確率過程');
SELECT (表示形式) FROM (テーブル名) WHERE (条件)
データの検索を行うコマンドです。表示形式に*を指定すれば条件に 一致する全てのカラムを表示します。
testdb => SELECT * FROM book;
bookname|keyword|date
--------------------------------+---------------+--------------
PostgreSQL解説|コンピュータ |10-30-2002
確率過程入門|確率過程 |4-25-2000
UPDATE (テーブル名) SET (...) WHERE (条 件)
データのうち条件に適合するローの情報を書き換えます。
testdb => UPDATE book SET bookname = 'PostgreSQL入門' WHERE date ='10/30/2002';
この例ではローdateが10/30/2002であるカラムのローbooknameに対応する部分がPostgreSQL入門に置き換えられます。
GRANT (委譲する権限) ON (テーブル名) TO '(ユーザ名)'
指定したテーブルの権限を指定したユーザに委譲します。例としてテーブルbookの全ての権限をユーザwww-dataに委譲する場合を考えてみましょう。これによって、ユーザwww-dataもデータベースを作成したユーザー同様にデータベースにアクセスすることができるようになります。ただし、www-dataはcreateuserコマンドでpostgreSQLのユーザとして登録されている必要があります。
testdb => GRANT ALL ON book TO 'www-data';
DELETE FROM (テーブル名) WHERE (条件)
条件に適合するテーブルをローから削除します。
testdb => DELETE FROM book WHERE bookname = 'PostgreSQL入門';
この例ではカラムbooknameがPostgreSQL入門であるローが削除されます。
DROP TABLE (テーブル名)
テーブル自身を削除します。実行後そのテーブルは使用できなくなり ます。
testdb => DROP TABLE book;

データベースのバックアップと復元

データベースの内容をバックアップしたり、データベースの内容を移動した りするときのためにpostgreSQLではpg_dumpコマンドがあります。pg_dumpコ マンドはデータベースをリサイクル可能なSQL形式で標準出力に出力するコマンド です。
pg_dump (データベース名) > dump.out
反対にバックアップしたデータをpostgres上に復元する方法はpsql -eコマ ンドを使います。
psql -e (データベース名) < dump.out

PostgreSQLに関するリンク集

PostgreSQLに関するホームページのリンクを以下に示しておきます。 Postgresのドキュメント、データベースサーバーを使ったプログラムの例な ど、ネット上に豊富な資料が公開されています。
  1. PostgreSQL
  2. PostgreSQL Information Page
  3. PostgreSQLユーザー会
  4. PostgreSQL 7.1 日本語マニュアル
  5. PostgreSQL FAQ in Japanese

参考文献