まず、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コマンドを使って、CSVファイルの一括登録を行います。 インデックスを使用している場合は、インデックスを再構成する必要があります。
psql# copy addr from '/home1/joe/pgsql/addr.csv' using delimiters ','; |
トリガを使う場合などは、以下のシェルを使って登録します。
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) |