PostgreSQL7.0手册-管理员手册-31. 管理数据库
内容
创建数据库
访问数据库
管理数据库
备份和恢复
如果 Postgrespostmaster 已经就绪并且运行起来了,那么我们就可以创建一些数据库做一些试验了.这里我们描述管理数据库的基本命令.
创建数据库
我们假设你要创建一个名为 mydb 的数据库.你可以用下面命令做这件事情:
% createdb dbname
Postgres 允许你在一个节点上创建任意数量的数据库,并且你自动成为该数据库的管理员.数据库名必须以字母开头而且少于 31 个字符长(译注:可以通过配置和重新编译 postgres 改变这个值。).并不是任何用户都有权利成为数据库管理员.如果Postgres拒绝为你创建数据库,那么节点管理员有必要赋予你创建数据库的权限.如果出现这种现象,请与你的节点管理员联系.
--------------------------------------------------------------------------------
访问数据库
一旦你已经建立了一个数据库,你可以用下面方法访问它:
运行 Postgres 的终端控制程序(SQL界面)(psql),它允许你交互地输入,编辑和执行 SQL 命令.
写一个利用 libpq 子过程库的 C 程序.它允许你在 C 里面提交一个 SQL 命令,然后再收到返回和状态信息.这个接口将在 PostgreSQL 程序员手册 中进一步讨论.
你可能希望运行起 psql,然后把本手册的例子试验一下.这个可以通过用下面命令激活数据库 dbname 进行:
psql dbname
你将看到如下欢迎信息:
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
dbname=>
这个提示符表示SQL界面正在侦听你的输入,因此你可以键入 SQL 查询到由SQL界面维护的工作区中.psql 程序响应由反斜杠 "\" 开头的转意字符.例如,你可以键入下面命令获得关于各种 PostgresSQL 命令的语法的帮助:
dbname=> \h
一旦你完成了向工作区中查询的输入,你可以键入下面命令把工作区的内容提交给 Postgres 服务器:
dbname=> \g
这个命令告诉服务器执行查询.如果你以分号结束查询(语句),上面的反斜杠-g就不必输入了.psql 会自动处理分号结尾的查询.如果要从一个文件里读入查询,而不是交互地输入,键入:
dbname=> \i filename
从 psql 退回到 UNIX,键入
dbname=> \q
psql 将退出并且回到你的命令行 shell.(要知道更多的转意字符信息,在SQL界面提示符上键入反斜杠-h.)在 SQL 查询里面可以随意使用空白(例如,空格,tabs 和 新行).单行注释用 “--”(破折号).在破折号后面到行尾的所有内容都被忽略.多行注释以及行内注释,用 “/* ... */”-- 从 Ingres 借来的习惯。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
删除数据库
如果你是数据库 mydb 的数据库管理员,你可以用下面 UNIX 命令将其删除:
% dropdb dbname
这个动作物理上删除所有与该数据库相关的 UNIX 文件,而且是不可逆的,所以在这么做之前你必须要考虑清楚.
还可以用下面语句在一次 SQL 会话里删除一个数据库。(译注:但不能是正在联接的数据库。)
> drop database dbname
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
备份和恢复
注意
每个数据库都应该经常备份。因为 Postgres 在文件系统里管理它自己的文件,我们不建议依靠你的文件系统的系统备份作为你的数据库备份;那样不能保证在恢复后文件处于可用的一致的状态。
Postgres 提供两个工具备份你的系统:pg_dump 备份独立的数据库以及 pg_dumpall 在一个步骤里备份你的数据库节点。
可以用下面的命令备份一个独立的数据库:
% pg_dump dbname > dbname.pgdump
然后可以用下面命令恢复
cat dbname.pgdump psql dbname
这个技巧可以用于把数据库移动到一个新位置,然后重新命名现有数据库。
大数据库
作者:由 Hannu Krosing 写于 1999-06-19。
因为 Postgres 允许表的尺寸大于你的系统的最大文件尺寸,可能把表输出到一个文件会有问题,因为生成的文件很可能比你的系统允许的最大文件大。
因为 pg_dump 输出到 stdout,你可以用标准的 *nix 工具绕开这个问题:
使用压缩的 输出:
% pg_dump dbname gzip > filename.dump.gz
重载:
% createdb dbname
% gunzip -c filename.dump.gz psql dbname
或
% cat filename.dump.gz gunzip psql dbname
使用分割(split):
% pg_dump dbname split -b 1m - filename.dump.
重载:
% createdb dbname
% cat filename.dump.* pgsql dbname
当然,文件名(filename)和 pg_dump 输出的内容不必与数据库名一样。同样,重载的数据库可以有任意新的名称,所以这个机制还适用于给数据库改名。
--------------------------------------------------------------------------------