<< Back to man.ChinaUnix.net

Next Previous Contents

7. 快速开始指引

请参考 快速安装指引一章。

7.1 资料库建立、丢弃、改名

你可使用使用者友善的 GUI,名为?pgaccess'来建立和丢弃资料库,也可用指令列?psql'工具。


如你以 root 身份登入,变身为用者?postgres'︰
# xhost + (让 pgaccess 使用显示装置)
# su - postgres
bash$ man createdb
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
…在 psql 按上 / 下箭咀来编辑历史纪录或用 \s

bash$ export DISPLAY=<主机名>:0.0
bash$ man pgaccess
bash$ pgaccess mydatabase

你现在可以在 psql 或 pgaccess 高速下达 SQL 指令。

要丢弃资料库的话︰


bash$ man dropdb
bash$ man destroydb  (在较旧版本的 pgsql 中使用) 
bash$ dropdb <资料库名称>

也可以在一个 SQL 连接期间用以下指令消灭一个资料库︰
> drop database <资料库名称>

要更改资料库名称,请参阅 备份和还原一节

7.2 建立和丢弃用户

要建立新用户,以 unix 用户?postres'签入,你可用简单易用的 GUI 工具?pgaccess'来增减用户。


bash$ man pgaccess
bash$ pgaccess <资料库名称>

击选“Users”tab,再击选 Object|New 或 Object|Delete

你也可用指令行命令稿 (script)。名为?createuser'的命令稿启动 psql。


bash$ man createuser
bash$ createuser <用户名称>
bash$ createuser -h host -p port -i userid <用户名称>

要丢弃一个 postgres 用户,使用命令稿?destroyuser'。


bash$ man dropuser
bash$ man destroyuser (在较旧版本的 pgsql 中使用) 
bash$ destroyuser

7.3 建立和丢弃群组

目前没有简单的界面可用来设定用户群组。你要自行在 pg_group 表格中插入或更新纪录。如︰


bash$ su - postgres
bash$ psql <资料库名称>
…在 psql 按上 / 下箭咀来编辑历史纪录或用 \s

psql=> insert into pg_group (groname, grosysid, grolist)
psql=> values ('posthackers', '1234', '{5443, 8261}' );
INSERT 58224
psql=> grant insert on foo to group posthackers;
CHANGE
psql=>

pg_group 中的栏位为︰ groname 群组名称。这名称必须全为字母或数字,不可有底线或标点符号。

grosysid 群组代码。这是一个 int4,每个群组都要独一无二。

grolist 属于此群组的 pg_user 代码名单。是一个 int4[]。

要删除群组︰


bash$ su - postgres
bash$ psql <资料库名称>
…在 psql 按上 / 下箭咀来编辑历史纪录或用 \s


psql=> delete from pg_group where groname = 'posthackers';

7.4 建立、编辑和丢弃表格

你可使用使用者友善的 GUI,名为?pgaccess',或指令列?psql'工具来建立、编辑和丢弃资料库表格。


bash$ man pgaccess
bash$ pgaccess <资料库名称>

击选 Table | New | Design 按钮。
bash$ man psql
bash$ psql <资料库名称>
…在 psql 按上 / 下箭咀来编辑历史纪录或用 \s

在 psql 提示下,键入标准的 SQL 指令,如?create table'、?alter table'或?drop table'来处理表格。

7.5 建立、编辑和丢弃表格中的纪录

你可使用使用者友善的 GUI,名为?pgaccess',或指令列?psql'工具来建立、 编辑和丢弃资料库表格中的纪录。


bash$ man pgaccess
bash$ pgaccess <资料库名称>

击选 Table | < 选一个表格 > | Open 按钮。
bash$ man psql
bash$ psql <资料库名称>
…在 psql 按上 / 下箭咀来编辑历史纪录或用 \s

在 psql 提示下,键入标准的 SQL 指令,如?insert into table_name'、?update table_name'或?delete from table_name'来处理表格。

7.6 改变目前的资料库

你可使用使用者友善的 GUI,名为?pgaccess',或指令列?psql'工具来改变目前的资料库。


bash$ man pgaccess
bash$ pgaccess <资料库名称>

击选 Database | Open 按钮。
bash$ man psql
bash$ psql <资料库名称>
…在 psql 按上 / 下箭咀来编辑历史纪录或用 \s

psql=> connect <资料库名称> <user>

7.7 备份与还原资料库

PostgreSQL 提供了两个工具来备份你的系统︰pg_dump 备份一个资料库,pg_dumpall 一次过备份所有资料库。


bash$ su - postgres
bash$ man pd_dump
bash$ pd_dump <资料库名称> > database_name.pgdump

还原则︰
bash$ cat database_name.pgdump | psql <资料库名称>

这技考可用于搬移资料库或为资料库改名。

警告︰每个资料库都要定时备份。因为 PostgreSQL 自行管理它在文档系统中的文档,所以不要倚赖系统备份来作资料库备份。 没有人能保证哪些文档在还原后会处于一个可用而一致的状态。

备份大型资料库︰因为 PostreSQL 容许表格大过系统的最大文档容量,把一个表格输出为一个文档会有问题, 因为所产生的文档可能会超出系统的限制。因为 pg_dump 会写到 stdout,你可使用标准的 unix 工具来解决这可能的问题︰

使用压缩了的输出︰


bash$ pg_dump <资料库名称> | gzip > filename.dump.gz

用以下方法重新载入︰
bash$ createdb <资料库名称>
bash$ gunzip -c filename.dump.gz | psql <资料库名称>


bash$ cat filename.dump.gz | gunzip | psql <资料库名称>

使用 split︰


bash$ pg_dump <资料库名称> | split -b 1m - filename.dump.

注意︰以上指令中,在 filename.dump 后有一点 (.)!!你可用以下方法重新载入︰
bash$ man createdb
bash$ createdb <资料库名称>
bash$ cat filename.dump.* | pgsql <资料库名称>

当然,文档名称(filename)和 pg_dump 输出的内容无需和资料库名称配合。此外,还原了的资料库可有任何新名。 因此这方法适用于为资料库改名。

要把所有 PostgreSQL 输出,使用 pg_dumpall


bash$ man pg_dumpall
bash$ pg_dumpall -o > db.out
要重新载入︰
bash$ psql -e template1 < db.out

7.8 资料库保安

请参阅 PostgreSQL 保安一节。

7.9 线上求助

你必须知道 PostgreSQL 的线上求助设施,因为它会为你节省很多时间,让你快速取得资料。

请参阅不同指令,如 createdb、createuser 等等的线上 man pages。


bash$ man createdb

也请参阅 psql 的线上求助信息,在 psql 提示键入 \h


bash$ psql mydatabase
psql> \h
提示︰在 psql 按上 / 下箭咀来编辑历史纪录或用 \s

7.10 建立激发 (Triggers) 和内储程序 (Stored Procedures)

要建立激发或内储程序,先在你使用的资料库执行?createlang'命令稿来安装 ?plpgsql'。如果你想预设使用它,把它安装在?template1', 因为以后建立的资料库都是 template1 的仿装品。参阅?createlang'网页或位于 /usr/doc/postgresql-7.0.2/user/index.html 的 User Guide。


bash$ man createlang
bash$ createdb mydb
bash$ export PGLIB=/usr/lib/pgsql
bash$ createlang plpgsql mydb
bash$ createlang plpgsql template1

也请参考 例子 RPM 中激发和内储程序的例子。Examples RPM 中的其中一个例子︰
create function tg_pfield_au() returns opaque as '
begin
    if new.name != old.name then
        update PSlot set pfname = new.name where pfname = old.name;
    end if;
    return new;
end;
' language 'plpgsql';

create trigger tg_pfield_au after update
    on PField for each row execute procedure tg_pfield_au();

另一个激发程序码例子︰
create trigger check_fkeys_pkey_exist
        before insert or update on fkeys
        for each row
        execute procedure
        check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');

你必须安装 TEST 套件  postgresql-test-7.0.2-2.rpm 和阅读在 /usr/lib/pgsql/test/regress/sql 中的 SQL 命令稿例子。

要显示资料库中激发的名单 


bash$ psql mydb
psql=> \?
psql=> \dS
psql=> \d pg_trigger
psql=> select tgname from pg_trigger order by tgname;

要显示资料库中函数和内储程序的名单 


bash$ psql mydb
psql=> \?
psql=> \dS
psql=> \d pg_proc
psql=> select proname, prosrc from pg_proc order by proname;
psql=> \df

7.11 PostgreSQL 文件

有关其他问题,请参阅 PostgreSQL 的说明书,它们的资料十分全面。PostgreSQL 文件已在套件中。请阅读?User's Guide'、?Programmer's Guide'、?Administrator's Guide'和其他说明书。


Next Previous Contents