开发者社区> 辣海鲜意面加饭团> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

pg_dumpall

简介: pg_dumpall从所有数据库中读取表,所以你很可能需要以一个数据库超级用户的身份连接以便生成完整的转储。同样,你也需要超级用户特权执行保存下来的脚本,这样才能增加角色和组以及创建数据库。
+关注继续查看

pg_dumpall - 将一个PostgreSQL数据库集簇抽取到一个脚本文件中,(“转储”)一个脚本文件,该脚本文件包含可以用作psql的输入SQL命令来恢复数据库。pg_dumpall还转储对所有数据库公用的全局对象(pg_dump不保存这些对象),也就是说数据库角色和表空间都会被转储。

使用方法
pg_dumpall [connection-option...] [option...]

psql 恢复
pg_dumpall需要多次连接到PostgreSQL服务器(每个数据库一次)。如果你使用口令认证,可能每次都会要求口令。这种情况下使用一个~/.pgpass会比较方便。

选项说明

-a
--data-only

只转储数据,不转储模式(数据定义)。

-c
--clean

包括那些重建之前清理(删除)数据库对象的SQL命令。

-d
--inserts

把数据当作 INSERT 命令输出(而不是 COPY)。这样将令恢复过程非常缓慢, 这主要 是用于让转储输出可以用于其它非 PostgreSQL 数据库。请注意,如果你重新排列了字段顺 序,那么恢复可能失败。 -D 选项更安全,也更慢。

-D
--column-inserts
--attribute-inserts

把数据以带着明确字段名(INSERT INTO table (column, ...) VALUES ...)的 INSERT  命令形式转储出来。这样会令恢复非常慢,这主要是用于让转储输出可以用于其它非 PostgreSQL 数据库。

-g, --globals-only

只转储全局对象(用户和组),而不转储数据库。

-i
--ignore-version

忽略 pg_dumpall 和数据库服务器之间的版本差别。
pg_dumpall 可以处理来自以前版本的 PostgreSQL 的数据库,但是太老的数据库就不再支持了。如果你需要覆盖版本检查,那么可以使用这个选项(如果  pg_dumpall 失败了,可别说我们没警告你。)

-o
--oids

做为每个表的数据的一部分转储对象标识符(OID)。如果你的应用以某种方式引用了  OID 字段(比如,在外键约束里),那么使用这个选项。否则,不应该使用这个选项。

-O
--no-owner

不输出那些设置对象的所有权,使之匹配原始数据库的命令。缺省时,pg_dumpall 发出 ALTER OWNER 或者 SET SESSION AUTHORIZATION 这样的设置创建模式元素的语句。除非由超级用户运行这些语句(或者拥有脚本中所有这些对象的同一个用户)),否则这些语句会失效。要让一个脚本可以被任何用户恢复,就得声明 -O,不过这样依赖所有对象的所有者都成了这个用户。

-s
--schema-only

只转储模式(数据定义),不转储数据。

-S username
--superuser=username

声明在关闭触发器的时候使用的超级用户名。只有在使用了 --disable-triggers 的时候,这个才相关。(通常,最好不要使用这个选项,而是以超级用户身份启动结果脚本。)

-v
--verbose

声明冗余模式。这样将令 pg_dumpall 在转储文件中输出启动/停止时间,向标准错误打 印进度信息。它也会打开 pg_dump 里面的冗余输出。

-x
--no-privileges
--no-acl

避免转储访问权限(授权/撤销命令)。

-X disable-dollar-quoting
--disable-dollar-quoting

这个选项关闭函数体的美元符号的使用,强制他们使用 SQL 标准的引号语法。

-X disable-triggers
--disable-triggers

这个选项只在创建仅有数据的转储的时候有用。它指示 pg_dumpall 包含在恢复数据的时候,在目标表上临时关闭触发器的命令。如果在你的表上有参考完整检查或者其它你在数据恢复的时候不想调用的触发器,那么请使用这个选项。
目前,为 --disable-triggers 发出的命令必须由超级用户完成。因此,你还应该用 -S 声明一个超级用户名,或者最好是用超级用户身份来启动脚本。

-X use-set-session-authorization
--use-set-session-authorization

这个选项已经废弃了,不过为了和 pg_dump 兼容,仍然保留。输出标准的 SQL SET  SESSION AUTHORIZATION 命令而不似乎 OWNER TO 命令。这样令转储更加符合标准,但是如 果转储文件中的对象的历史有些问题,那么可能不能正确恢复。

连接参数

-h host

声明数据库服务器所运行的机器的主机名。 如果数值以斜杠开头,那么就把它用做 Unix 域套接字的目录。缺省是从 PGHOST 环境变量里拿来的(如果设置了),否则使用 Unix 域套接字。

-p port

声明服务器监听的 TCP 端口号或者 Unix 域套接字文件扩展。缺省是 PGPORT 环境变量(如果设置了),或者是编译时的缺省。

-U username

以给定用户身分联接。

-W

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
dpkg-buildpackage: error: fakeroot not found, either install the fakeroot
dpkg-buildpackage: error: fakeroot not found, either install the fakeroot
38 0
npm install --save 与 npm install --save-dev 的区别
npm install --save 与 npm install --save-dev 的区别 以npm安装msbuild为例: npm install msbuild: 会把msbuild包安装到node_modules目录中 不会修改package.
1519 0
Ultimate Pentesting VM
 http://www.isdpodcast.com/resources/upv
623 0
DvBBS->Asp.Net Forums 圣诞版
程序2个星期前写好了,可是代码实在见不得人,所以想改一下,可是最近忙着搭建.Net的网站,没什么时间改了,venjiang说对转换程序来说不需要性能优化的,而且很多人也期待着,所以我也打包了一下,上传上来,如果有什么问题可以msn或者QQ说 QQ:11871155 MSN:x_inday@msn.
749 0
44
文章
7
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载