您的位置:首页 > 数据库

postgresql之pg_dump命令详解

2012-10-15 12:46 323 查看
pg_dump用于提取 PostgreSQL数据库到一个脚本文件或其他的存档文件

用法:

pg_dump
[connection-option...] [option...]
[dbname]

描述:

pg_dump用于备份postgresql数据库,它可以在数据库运行时使用,pg_dump不会阻塞其他的用户访问数据库。

转储的内容可以脚本或存档的方式输出。脚本转储指包含SQL命令的纯文本文件,这些 SQL 命令可以用于重建该数据库并将之恢复到保存成脚本的时候的状态。要从这些脚本中恢复数,需要使用psql命令。脚本文件可以被用来重建数据库。

另一种归档文件格式必须和pg_restore一起使用重建数据库。它们允许pg_restore有选择地进行恢复,甚至在恢复前重新排列项目。归档文件格式被设计成跨平台移植。

当一种归档文件格式与pg_restore结合使用,那么pg_dump就能提供一种灵活的归档和传输机制。 pg_dump可以用于备份整个数据库,然后就可以使用pg_restore检查这个归档和/或选择要恢复的数据库部分。最灵活的输出文件格式是“自定义”格式(-Fc)。它允许选择和重新排序的所有归档的项目,在默认情况下被压缩。

在运行pg_dump的时候,你应该检查任何警告的输出(在标准错误上打印)。


Options

下面的命令行选项控制内容及格式输出。

dbname
指定数据库的名称,如果没有指定,会引用环境变量 PGDATABASE,
如果环境变量没有设置,那么会指定使用用户名来连接。
-a

--data-only
只转储数据,而不是架构(数据的定义)。表中的数据,大对象的序列值被转储。此选项与specifying --section=data类似。
-b

--blobs
包含大对象,当指定参数为 --schema, --table,
or --schema-only 是该动作默认执行,所以-b选项只在选择性转储数据时有用。
-c

--clean
输出在创建数据库创建命令之前先清理(删除)该数据库对象的命令

此选项只对纯文本格式有意义的。对于归档格式,你可以在调用pg_restore时指定该选项
-C

--create
以一条创建该数据库本身并且与这个数据库联接等命令开头进行输出。 (如果是这种形式的脚本,那么你在运行脚本之前和哪个数据库联接就 不重要了。) ,此选项只对纯文本格式有意义的。对于归档格式,你可以在调用pg_restore时指定该选项。
-E encoding

--encoding=encoding
指定字符集编码。 默认情况下使用数据库编码。 (另一个方法是设置 PGCLIENTENCODING环境来达到同样的结果
-f file

--file=file
把输出发往指定的文件.如果忽略这些,则使用标准输出。

-F format

--format=format
选择输出的格式。
如下:

p

plain
输出一个纯文本 SQL 脚本文件(
默认)
c

custom
输出一个自定义格式用于pg_store 。最灵活的输出格式,它允许恢复过程中手动选择和重新排序的档案条目。默认压缩。
d

directory
输出一个目录格式的存档用于pg_restore输入。
这将创建带有一个存储每张表和BLOB数据的文件的目录,加上一个所谓的内容文件表用机器可以读取的格式 描述转储对象, 这种格式pg_restore可以读取。
默认压缩
t

tar
输出适合输入到 pg_restore 里的tar归档文件. 使用这个归档允许在恢复数据库时重新排序和/或把表结构排除在外. 同时也可能可以在恢复的时候限制对哪些数据进行恢复

-i

--ignore-version
一个工具选项,现在被忽略了.
-n schema

--schema=schema
指定输出的框架名。指定的框架将被输出转储。
-N schema

--exclude-schema=schema
排除输出的框架名。指定的框架将不被输出。

-o

--oids
为每个表都输出对象标识(OID).
如果你的应用在某种程度上引用了OID字段的话,(比如,在外键约束中 用到). 那么使用这个选项. 否则,不应该使用这个选项
-O

--no-owner
不把对象的所有权设置为对应源数据库。

这个选项只是对纯文本格式有意义.对于其它格式,在你调用 pg_restore 的时候你可以声明该选项.
-R

--no-reconnect
此选项已经过时的,但可以向后兼容.
-s

--schema-only
只输出架构(数据定义),不输出数据。
-S username

--superuser=username
在某些场合,pg_dump 创建的脚本或者归档需要有 超级用户访问的权限,比如在关闭触发器或者为大纲元素甚至所有属性时. 这个选项声明在这些场合时使用的用户名
-t table

--table=table
只输出表 table的数据
-T table

--exclude-table=table
不输出表table的数据
-v

--verbose
声明冗余模式。 这样将令 pg_dump 在标准错误上打印 进度信息.
-V

--version
输出pg_dump的版本信息然后退出.
-x

--no-privileges

--no-acl
避免输出 ACL(赋予/撤消 命令)和表的所有者关系信息
-Z 0..9

--compress=0..9
声明在那些支持压缩的格式中使用的压缩级别.零意味着没有 压缩 (目前只有客户化格式支持压缩)
--no-security-labels
不转储安全标签.
--no-tablespaces
不输出选择表空间命令.
--no-unlogged-table-data
不转储没有日志记录的表的内容
--quote-all-identifiers
强制引用所有标识符 ,这可能用于转储迁移到未来的版本引入额外的关键字.
-?

--help
显示帮助并退出.

以下选项控制数据库连接参数.

-h host

--host=host
声明运行服务器 的机器的主机名.缺省是使用本地Unix主控套接字,而不是一个 IP 联接. 如果主机名以斜扛开头,则它被用做到 Unix 域套接字的路径
-p port

--port=port
声明服务器 正在侦听并等待联接的TCP/IP 端口或本地 Unix 主控套接字文件句柄. 缺省的端口号是5432,或者环境变量 PGPORT 的值(如果存在)
-U username

--username=username
以给出用户身分联接
-w

--no-password 从来不需要密码提示

-W

--password
强制口令提示.如果服务器需要口令认证,那么这个动作应该自动发生

--role=rolename
指定一个角色的名字是用来创建转储
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: