PostgreSQL7.0手册-管理员手册-31. 管理数据库
2019-09-08 23:33:51
供稿:网友
 
第三十一章. 管理数据库 
内容  
创建数据库  
访问数据库  
管理数据库  
备份和恢复  
如果 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 输出的内容不必与数据库名一样。同样,重载的数据库可以有任意新的名称,所以这个机制还适用于给数据库改名。 
--------------------------------------------------------------------------------