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