PostgreSQL導入

Pいままで少しの手間を惜しんで、ファイルベースでもろもろのデータを管理していた
んですけど、さすがにデータベース使って管理したほうが楽できるだろうって
ことで、PostgreSQLを導入してみることにしました。

こんなもんは、多少、習得に時間がかかったとしても、後々のことを考えると
やっちゃったほうがいいんです。

そんなわけで早速インストールから

# aptitude install postgresql-8.1

インストール後の設定については詳しく調べてません。
ま、後々でもよいでしょう。

インストールが終わったら、postgresqlのユーザを作成します。

# su - postgres
postgres> createuser ${利用するユーザ名}
postgres> psql
postgres=# \du // ユーザ一覧の表示

List of roles
Role name | Superuser | Create role | Create DB | Connections | Member of

                                                                                                                                                    • -

${ユーザ名} | no | no | no | no limit |
postgres | yes | yes | yes | no limit |
(2 rows)

psql ってのは、PostgreSQL用のシェルみたいなもんで、SQLをここに書くことで
データベースの操作が行えます

PostgreSQLのコマンドである、"\du"が登録されているユーザ一覧を表示するコマンドになります。

PostgreSQLのシェルを抜けるのは、"\q"を利用します

postgres=# \q // exit
postgres> exit // postgres ユーザを抜ける

さて、PostgreSQLをインストールしたときに作成されるユーザ"postgres"は、パスワードが
設定されていないので、rootからじゃ無ければ呼び出せません。

サーバを公開するとなったら、postgres にパスワードが設定されて*いない*方が良いの
かもしれませんが、遊んでみるのにはちょっと不便だったので、パスワード設定を
しておきました。

# passwd postgres // postgres のユーザパスワード設定
# exit
user> su - postgres
postgres> // postgres さんになれるようになった

ようやく、データベースを作成します。

postgres> createdb ${作成するデータベース名}
CREATE DATABASE
postgres> exit

この先の作業は、postgresさんで行う必要が無いので、作業ユーザから行います。

作成したユーザと、データベースを使うようにpsqlの引数として渡します

user> psql -U ${ユーザ名} -d ${データベース名}
${データベース名}=>\l // データベース一覧

これで、一応作業環境が用意できました。

とりあえず、テーブルとか作って遊んでみることにします

user=> create table sample( id integer, name varchar(32) );
user=> \dt // テーブル一覧の表示
List of relations
Schema | Name | Type | Owner

                                                                • -

public | sample | table | ${ユーザ名}
(1 row)
user=> insert into sample( id, name ) values( 0, 'ほげほげ' );
INSERT 0 1
user=> insert into sample( id, name ) values( 0, 'ひげひげ' );
INSERT 0 1
user=> select * from sample;
id | name

                            • -

0 | ほげほげ
1 | ひげひげ
(2 rows)

テーブルが作成できたんで、ドロップ(削除)してみます

user=> drop table sample;
DROP TABLE
user=> \dt
No relations found. // ちゃんと消えてた

テーブルの作成なんかは、psqlに書き込むんじゃなくって、ファイルにSQLを書いといた
方が当然扱いやすいでしょう。

(test.sql)

create table sample( id integer, name varchar(32) );

ファイルに書いたSQLを実行するのには、"\i"コマンドを使います

user=> \i ./test.sql

日本PostgreSQLユーザ会で、PostgreSQLの日本語ドキュメントが公開されているんで
何か困ったことがあったらここをたずねてみましょう。

http://www.postgresql.jp/


(おまけ)
psql の主要(?)コマンド一覧

/l ... データベース一覧の表示
/du ... ユーザ名一覧の表示
/dt ... テーブル一覧の表示
/i ... ファイルに書かれているSQLを実行