ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

PostgreSQLの環境設定

ユーザの設定

 まず、psqlツールを使って、ユーザを作成します。
 ユーザ作成の他に、ユーザ削除や、ユーザ一覧の表示なども行えます。

unix# psql データベース名

●ユーザ登録
psql# create user ユーザ名 [with password パスワード];

●ユーザ削除
psql# drop user ユーザ名;

●ユーザ一覧の表示
psql# select usename from pg_user;

 作成したらユーザに、既存の表にアクセスできるようにするためには、アクセス権の設定が必要です。 アクセス権の設定は、grant/revokeコマンドにより行います。

unix# psql データベース名

●特定のユーザに参照のみのアクセス権を設定/解除
psql# grant select on 表名 to ユーザ名;
psql# revoke select on 表名 from ユーザ名;

●すべてのユーザにすべてのアクセス権を設定/解除
psql# grant all on 表名 to public;
psql# revoke all on 表名 from public;

表の設定

 データベースでは、すべてのデータを表として格納しますので、表を作成する必要があります。 表は、create tableというSQL文で作成できるので、psqlを使って作成します。

unix# psql addr

●表の作成
psql# create table addr (
  id char(10) not null,
  name varchar(32) not null,
  zip varchar(10),
  addr varchar(64),
  tel varchar(16));

●表の削除
psql# drop table addr;

●表一覧の表示
psql# \dt
Database    = addr
 +------------------+----------------------------------+----------+
 |  Owner           |             Relation             |   Type   |
 +------------------+----------------------------------+----------+
 | joe              | addr                             | table    |
 +------------------+----------------------------------+----------+

●表の項目一覧の表示
psql# \d addr
Table    = addr
+----------------------------------+----------------------------------+-------+
|              Field               |              Type                | Length|
+----------------------------------+----------------------------------+-------+
| id                               | char() not null                  |    10 |
| name                             | varchar() not null               |    32 |
| zip                              | varchar()                        |    10 |
| addr                             | varchar()                        |    64 |
| tel                              | varchar()                        |    16 |
+----------------------------------+----------------------------------+-------+

データの一括登録

 データもSQL文で登録することもできますが、CSVファイルから一括登録することもできます。

CSVファイルの内容
1,升村 丞,920-0967,金沢市菊川1-9-6,076-261-4921
2,北陸 太郎,920-0000,金沢市大手町1-1-1,076-111-3333
3,金沢 花子,920-0123,金沢市片町1-2-3,076-123-4567

 一括登録する場合は、copyコマンドを使う方法と、insert文を使う方法があります。 copyコマンドは高速ですが、トリガなどは動作しませんので、そのような場合は、insert文を使ってください。

copyコマンドを使う方法

 copyコマンドを使って、CSVファイルの一括登録を行います。 インデックスを使用している場合は、インデックスを再構成する必要があります。

psql# copy addr from '/home1/joe/pgsql/addr.csv' using delimiters ',';

insert文を使う方法

 トリガを使う場合などは、以下のシェルを使って登録します。

unix# sh insertCSV.sh addr < addr.csv | psql testdb

 このシェルは、以下のような内容ですので、汎用的に利用できます。

unix# cat insertCSV.sh
while read inputline
do
    echo "insert into $1 values ("
    echo $inputline
    echo ");"
done

登録したデータの表示

psql# select * from addr;
id        |name     |     zip|addr             |         tel
----------+---------+--------+-----------------+------------
1         |升村 丞  |920-0967|金沢市菊川1-9-6  |076-261-4921
2         |北陸 太郎|920-0000|金沢市大手町1-1-1|076-111-3333
3         |金沢 花子|920-0123|金沢市片町1-2-3  |076-123-4567
(3 rows)


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp