↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 命令行工具 / 客户端程序

pg_dumpall

描述 pg_dumpall 是一个实用程序,用于写出( “ 转储 ” )一个集簇中的所有 PostgreSQL 数据库到一个脚本文件中。该脚本文件包含 SQL 命令,可作为 psql 的输入来恢复这些数据库。它通过对集簇中的每个数据库调用 pg_dump 来实现这一点。 pg_dumpall 还会转储所有数据库共有的全局对象,即数据库角色、表空间以及配置参数的权限授予。( pg_dump 不会保存这些对象。) 由于 pg_dumpall 会读取所有数据库中的表,因此通常必须以数据库超级用户身份…

当前查看 PostgreSQL 18。

中文定义与说明

命令行工具 pg_dumpall [ connection-option ...] [ option ...]。

同版本中文手册节选

描述

pg_dumpall 是一个实用程序,用于写出(“转储”)一个集簇中的所有 PostgreSQL 数据库到一个脚本文件中。该脚本文件包含 SQL 命令,可作为 psql 的输入来恢复这些数据库。它通过对集簇中的每个数据库调用 pg_dump 来实现这一点。pg_dumpall 还会转储所有数据库共有的全局对象,即数据库角色、表空间以及配置参数的权限授予。(pg_dump 不会保存这些对象。)

由于 pg_dumpall 会读取所有数据库中的表,因此通常必须以数据库超级用户身份连接,才能生成完整的转储。另外,要执行保存的脚本,也需要具备超级用户权限,这样才能添加角色并创建数据库。

SQL 脚本将写入标准输出。使用 -f/--file 选项或 shell 操作符将其重定向到文件。

pg_dumpall 需要多次连接到 PostgreSQL 服务器(每个数据库一次)。如果使用密码认证,它每次都会提示输入密码。在这种情况下准备一个 ~/.pgpass 文件会比较方便。详见第 32.16 节。

警告

恢复转储会导致目标系统执行由源超级用户所选择的任意代码。部分转储和部分恢复也无法限制这一点。如果不信任源超级用户,则在恢复前必须检查转储出的 SQL 语句。注意,执行转储和恢复的客户端并不需要信任源超级用户或目标超级用户。

选项

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

-a
--data-only

只转储数据,不转储模式(数据定义)或统计信息。

-c
--clean

在重新创建之前,输出用于 DROP 所有已转储数据库、角色和表空间的 SQL 命令。当恢复需要覆盖现有集簇时,此选项很有用。如果目标集簇中不存在某些对象,则恢复期间会报告可忽略的错误消息,除非还指定了 --if-exists。

-E encoding
--encoding=encoding

在指定的字符集编码中创建转储。默认情况下,转储将以数据库编码创建。(获得相同结果的另一种方法是将 PGCLIENTENCODING 环境变量设置为所需的转储编码。)

-f filename
--file=filename

将输出发送到指定文件。如果省略此选项,则使用标准输出。

-g
--globals-only

只转储全局对象(角色和表空间),不转储数据库。

-O
--no-owner

不要输出用于将对象所有权设置为与原始数据库一致的命令。默认情况下,pg_dumpall 会发出 ALTER OWNER 或 SET SESSION AUTHORIZATION 语句,以设置已创建模式元素的所有权。除非该脚本由超级用户(或拥有脚本中全部对象的同一用户)启动,否则这些语句在运行时会失败。若要创建一个可由任意用户恢复、并让该用户获得所有对象所有权的脚本,请指定 -O。

-r
--roles-only

只转储角色,不转储数据库或表空间。

-s
--schema-only

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

-S username
--superuser=username

指定在禁用触发器时要使用的超级用户名。这只在使用 --disable-triggers 时相关。(通常最好省略它,而是以超级用户身份运行生成的脚本。)

-t
--tablespaces-only

只转储表空间,不转储数据库或角色。

-v
--verbose

指定详细模式。这会让 pg_dumpall 把开始/停止时间写入转储文件,并将进度消息输出到标准错误。重复指定该选项会使更多调试级别的消息出现在标准错误中。该选项也会传递给 pg_dump。

-V
--version

打印 pg_dumpall 的版本并退出。

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

不转储访问权限(GRANT/REVOKE 命令)。

--binary-upgrade

此选项供就地升级实用程序使用。不建议也不支持将其用于其他目的。该选项的行为可能在未来的版本中更改而不另行通知。

--column-inserts
--attribute-inserts

将数据转储为带有显式列名的 INSERT 命令(INSERT INTO table (column, ...) VALUES ...)。这会使恢复变得非常缓慢;它主要用于生成可以装入非 PostgreSQL 数据库的转储。

--disable-dollar-quoting

此选项禁用对函数体的美元引用,并强制用 SQL 标准字符串语法对它们加引号。

--disable-triggers

此选项只在创建包含数据但不包含模式的转储时才相关。它指示 pg_dumpall 在输出中包含一些命令,以便在恢复数据时临时禁用目标表上的触发器。如果这些表上存在不希望在数据恢复期间触发的引用完整性检查或其他触发器,请使用此选项。

目前,为 --disable-triggers 输出的这些命令必须由超级用户执行。因此,还应通过 -S 指定一个超级用户名,或者更好的做法是确保以超级用户身份运行生成的脚本。

--exclude-database=pattern

不转储名称匹配 pattern 的数据库。可以多次写 --exclude-database 开关,以排除匹配所给模式中任意一个的数据库。pattern 参数按照 psql 的\d 命令所使用的同样规则解释(见模式),因此也可以通过在模式中使用通配符来排除多个数据库。使用通配符时,如有需要请务必为模式加引号,以防止 shell 展开通配符。

--extra-float-digits=ndigits

在转储浮点数据时,使用指定的 extra_float_digits 值,而不是最大可用精度。出于备份目的的常规转储不应使用此选项。

--filter=filename

指定一个文件名,从中读取要从转储中排除的数据库名称的匹配模式。这些模式按照与 --exclude-database 相同的规则解释。要从 STDIN 读取,请使用-作为文件名。--filter 可与 --exclude-database 结合使用以排除数据库,也可以指定多次以读取多个过滤文件。

该文件每行列出一个数据库名匹配模式,格式如下:

exclude database PATTERN

以 # 开头的行被视为注释并忽略。注释也可以放在对象匹配模式行之后。空白行同样会被忽略。有关如何在匹配模式中加引号,请参见模式。

--if-exists

使用 DROP ... IF EXISTS 命令在 --clean 模式下删除对象。这会抑制原本可能报告的“does not exist”错误信息。除非同时指定了 --clean,否则此选项无效。

--inserts

将数据转储为 INSERT 命令(而不是 COPY)。这会使恢复非常缓慢;它主要用于生成可以装入非 PostgreSQL 数据库的转储。注意,如果重新安排了列顺序,恢复可能会彻底失败。--column-inserts 选项可以避免列顺序变化带来的问题,但速度更慢。

--load-via-partition-root

当为表分区转储数据时,让 COPY 或 INSERT 语句以包含该分区的分区层次结构根为目标,而不是以该分区本身为目标。这会导致在加载数据时为每一行重新确定适当的分区。当在另一台服务器上恢复数据,而行并不总是落在与原始服务器相同的分区中时,这可能很有用。例如,如果分区列是 text 类型,而两个系统对用于排序该分区列的排序规则定义不同,就可能发生这种情况。

--lock-wait-timeout=timeout

在转储开始时,不要无限等待获取共享表锁。如果无法在指定的 timeout 内锁定某个表,就让转储失败。超时可以用 SET statement_timeout 接受的任意格式指定。

--no-comments

不要转储 COMMENT 命令。

--no-data

不要转储数据。

--no-policies

不要转储行安全性策略。

--no-publications

不要转储发布。

--no-role-passwords

不要转储角色密码。恢复后,角色的密码值将为 null,在设置密码之前,密码认证始终会失败。由于指定此选项时不需要密码值,角色信息将从目录视图 pg_roles 而不是 pg_authid 读取。因此,如果某些安全策略限制了对 pg_authid 的访问,此选项也会有帮助。

--no-schema

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

--no-security-labels

不要转储安全标签。

--no-statistics

不要转储统计信息。这是默认行为。

--no-subscriptions

不要转储订阅。

--no-sync

默认情况下,pg_dumpall 会等待所有文件都被安全写入磁盘。该选项会使 pg_dumpall 立即返回而不等待,这样更快,但意味着随后如果操作系统崩溃,转储可能会损坏。通常,此选项适用于测试,但不应在从生产安装转储数据时使用。

--no-table-access-method

不输出用于选择表访问方法的命令。使用此选项时,所有对象在恢复时都会使用当时默认的表访问方法创建。

--no-tablespaces

不输出创建表空间的命令,也不输出用于为对象选择表空间的命令。使用此选项时,所有对象在恢复时都会创建在当时默认的表空间中。

--no-toast-compression

不输出用于设置 TOAST 压缩方法的命令。使用此选项时,所有列都会以默认压缩设置恢复。

--no-unlogged-table-data

不要转储不记录 WAL 的表的内容。此选项不影响是否转储表定义(模式);它只会抑制转储表数据。

--on-conflict-do-nothing

在 INSERT 命令中添加 ON CONFLICT DO NOTHING。除非同时指定了 --inserts 或 --column-inserts,否则此选项无效。

--quote-all-identifiers

强制为所有标识符加引号。当从其 PostgreSQL 主版本与 pg_dumpall 不同的服务器转储数据库时,或者当输出打算装入另一主版本服务器中时,建议使用此选项。默认情况下,pg_dumpall 只会给在其自身主版本中属于保留字的标识符加引号。处理其他版本服务器时,这有时会带来兼容性问题,因为它们的保留字集合可能略有不同。使用 --quote-all-identifiers 可以避免这类问题,但代价是转储脚本更难阅读。

--restrict-key=restrict_key

在转储输出中,把给定字符串用作 psql 的\restrict 键。若未指定限制键,pg_dumpall 会按需要随机生成一个。键只能包含字母数字字符。

此选项主要用于测试以及其他需要可重复输出的场景(例如比较转储文件)。一般不建议使用它,因为若恶意服务器事先知道该键,可能能够注入任意代码,并在运行 psql 处理转储输出的机器上执行。

--rows-per-insert=nrows

将数据转储为 INSERT 命令(而不是 COPY)。它控制每个 INSERT 命令的最大行数。指定的值必须是大于零的数字。恢复过程中的任何错误将导致只有属于有问题的 INSERT 的行丢失,而不是整个表的内容。

--statistics

转储优化器统计信息。

--statistics-only

只转储统计信息,不转储模式(数据定义)或数据。会转储表、物化视图、外部表和索引的优化器统计信息。

--sequence-data

在转储中包含序列数据。除非指定了 --no-data、--schema-only 或 --statistics-only,否则这是默认行为。

--use-set-session-authorization

输出符合 SQL 标准的 SET SESSION AUTHORIZATION 命令,而不是用 ALTER OWNER 命令来确定对象所有权。这会让转储更符合标准,但根据转储中对象的历史,可能无法正确恢复。

-?
--help

显示关于 pg_dumpall 命令行参数的帮助信息,并退出。

以下命令行选项控制数据库连接参数。

-d connstr
--dbname=connstr

以连接字符串形式指定用于连接服务器的参数;这些参数将覆盖任何冲突的命令行选项。

该选项名为 --dbname,是为了与其他客户端应用程序保持一致;但由于 pg_dumpall 需要连接多个数据库,连接字符串中的数据库名将被忽略。请使用 -l 选项指定初始连接所用的数据库名,该连接将用于转储全局对象并发现还应转储哪些数据库。

-h host
--host=host

指定运行数据库服务器的机器的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。默认值取自 PGHOST 环境变量(如果已设置);否则会尝试使用 Unix 域套接字连接。

-l dbname
--database=dbname

指定用于转储全局对象并发现还应转储哪些数据库的连接数据库名。如果未指定,则使用 postgres 数据库;如果该数据库不存在,则使用 template1。

-p port
--port=port

指定服务器正在监听连接的 TCP 端口,或本地 Unix 域套接字文件扩展名。默认值取自 PGPORT 环境变量(如果已设置),否则使用编译时默认值。

-U username
--username=username

用于连接的用户名。

-w
--no-password

绝不发出密码提示。如果服务器要求密码认证,而又无法通过 .pgpass 文件等其他方式获得密码,则连接尝试将失败。在没有用户在场输入密码的批处理作业和脚本中,此选项很有用。

-W
--password

强制 pg_dumpall 在连接数据库之前提示输入密码。

此选项从来都不是必需的,因为如果服务器要求密码认证,pg_dumpall 会自动提示输入密码。不过,pg_dumpall 会浪费一次连接尝试来发现服务器需要密码。在某些情况下,键入 -W 以避免这次额外的连接尝试是值得的。

注意,对每个要转储的数据库都会再次提示输入密码。通常,最好设置一个 ~/.pgpass 文件,而不是依赖手工输入密码。

--role=rolename

指定一个角色名,用于创建转储。此选项会使 pg_dumpall 在连接数据库后发出 SET ROLE rolename 命令。当已认证用户(由 -U 指定)缺少 pg_dumpall 所需权限,但可以切换到具备所需权限的角色时,这很有用。有些安装环境不允许直接以超级用户身份登录,而使用此选项可以在不违反该策略的情况下完成转储。

查看完整中文手册与上下文。

说明

描述 pg_dumpall 是一个实用程序,用于写出( “ 转储 ” )一个集簇中的所有 PostgreSQL 数据库到一个脚本文件中。该脚本文件包含 SQL 命令,可作为 psql 的输入来恢复这些数据库。它通过对集簇中的每个数据库调用 pg_dump 来实现这一点。 pg_dumpall 还会转储所有数据库共有的全局对象,即数据库角色、表空间以及配置参数的权限授予。( pg_dump 不会保存这些对象。) 由于 pg_dumpall 会读取所有数据库中的表,因此通常必须以数据库超级用户身份连接,才能生成完整的转储。另外,要执行保存的脚本,也需要具备超级用户权限,这样才能添加角色并创建数据库。 SQL 脚本将写入标准输出。使用 -f / --file 选项或 shell 操作符将其重定向到文件。 pg_dumpall 需要多次连接到 PostgreSQL 服务器(每个数据库一次)。如果使用密码认证,它每次都会提示输入密码。在这种情况下准备一个 ~/.pgpass 文件会比较方便。详见 第 32.16 节 。 警告 恢复转储会导致目标系统执行由源超级用户所选择的任意代码。部分转储和部分恢复也无法限制这一点。如果不信任源超级用户,则在恢复前必须检查转储出的 SQL 语句。注意,执行转储和恢复的客户端并不需要信任源超级用户或目标超级用户。 选项 以下命令行选项控制输出的内容和格式。 -a --data-only 只转储数据,不转储模式(数据定义)或统计信息。 -c --clean 在重新创建之前,输出用于 DROP 所有已转储数据库、角色和表空间的 SQL 命令。当恢复需要覆盖现有集簇时,此选项很有用。如果目标集簇中不存在某些对象,则恢复期间会报告可忽略的错误消息,除非还指定了 --if-exists 。 -E encoding --encoding= encoding 在指定的字符集编码中创建转储。默认情况下,转储将以数据库编码创建。(获得相同结果的另一种方法是将 PGCLIENTENCODING 环境变量设置为所需的转储编码。) -f filename --file=

手册中的可执行程序
pg_dumpall
程序版本
18.6
参考清单
客户端程序
选项定义组
55

用法

pg_dumpall [ connection-option ...] [ option ...]

手册中的选项

选项与参数说明
-a --data-only只转储数据,不转储模式(数据定义)或统计信息。
-c --clean在重新创建之前,输出用于 DROP 所有已转储数据库、角色和表空间的 SQL 命令。当恢复需要覆盖现有集簇时,此选项很有用。如果目标集簇中不存在某些对象,则恢复期间会报告可忽略的错误消息,除非还指定了 --if-exists 。
-E encoding --encoding= encoding在指定的字符集编码中创建转储。默认情况下,转储将以数据库编码创建。(获得相同结果的另一种方法是将 PGCLIENTENCODING 环境变量设置为所需的转储编码。)
-f filename --file= filename将输出发送到指定文件。如果省略此选项,则使用标准输出。
-g --globals-only只转储全局对象(角色和表空间),不转储数据库。
-O --no-owner不要输出用于将对象所有权设置为与原始数据库一致的命令。默认情况下, pg_dumpall 会发出 ALTER OWNER 或 SET SESSION AUTHORIZATION 语句,以设置已创建模式元素的所有权。除非该脚本由超级用户(或拥有脚本中全部对象的同一用户)启动,否则这些语句在运行时会失败。若要创建一个可由任意用户恢复、并让该用户获得所有对象所有权的脚本,请指定 -O 。
-r --roles-only只转储角色,不转储数据库或表空间。
-s --schema-only只转储对象定义(模式),不转储数据。
-S username --superuser= username指定在禁用触发器时要使用的超级用户名。这只在使用 --disable-triggers 时相关。(通常最好省略它,而是以超级用户身份运行生成的脚本。)
-t --tablespaces-only只转储表空间,不转储数据库或角色。
-v --verbose指定详细模式。这会让 pg_dumpall 把开始/停止时间写入转储文件,并将进度消息输出到标准错误。重复指定该选项会使更多调试级别的消息出现在标准错误中。该选项也会传递给 pg_dump 。
-V --version打印 pg_dumpall 的版本并退出。
-x --no-privileges --no-acl不转储访问权限(GRANT/REVOKE 命令)。
--binary-upgrade此选项供就地升级实用程序使用。不建议也不支持将其用于其他目的。该选项的行为可能在未来的版本中更改而不另行通知。
--column-inserts --attribute-inserts将数据转储为带有显式列名的 INSERT 命令( INSERT INTO table ( column , ...) VALUES ... )。这会使恢复变得非常缓慢;它主要用于生成可以装入非 PostgreSQL 数据库的转储。
--disable-dollar-quoting此选项禁用对函数体的美元引用,并强制用 SQL 标准字符串语法对它们加引号。
--disable-triggers此选项只在创建包含数据但不包含模式的转储时才相关。它指示 pg_dumpall 在输出中包含一些命令,以便在恢复数据时临时禁用目标表上的触发器。如果这些表上存在不希望在数据恢复期间触发的引用完整性检查或其他触发器,请使用此选项。
--exclude-database= pattern不转储名称匹配 pattern 的数据库。可以多次写 --exclude-database 开关,以排除匹配所给模式中任意一个的数据库。 pattern 参数按照 psql 的 \d 命令所使用的同样规则解释(见 模式 ),因此也可以通过在模式中使用通配符来排除多个数据库。使用通配符时,如有需要请务必为模式加引号,以防止 shell 展开通配符。
--extra-float-digits= ndigits在转储浮点数据时,使用指定的 extra_float_digits 值,而不是最大可用精度。出于备份目的的常规转储不应使用此选项。
--filter= filename指定一个文件名,从中读取要从转储中排除的数据库名称的匹配模式。这些模式按照与 --exclude-database 相同的规则解释。要从 STDIN 读取,请使用 - 作为文件名。 --filter 可与 --exclude-database 结合使用以排除数据库,也可以指定多次以读取多个过滤文件。
--if-exists使用 DROP ... IF EXISTS 命令在 --clean 模式下删除对象。这会抑制原本可能报告的 “ does not exist ” 错误信息。除非同时指定了 --clean ,否则此选项无效。
--inserts将数据转储为 INSERT 命令(而不是 COPY )。这会使恢复非常缓慢;它主要用于生成可以装入非 PostgreSQL 数据库的转储。注意,如果重新安排了列顺序,恢复可能会彻底失败。 --column-inserts 选项可以避免列顺序变化带来的问题,但速度更慢。
--load-via-partition-root当为表分区转储数据时,让 COPY 或 INSERT 语句以包含该分区的分区层次结构根为目标,而不是以该分区本身为目标。这会导致在加载数据时为每一行重新确定适当的分区。当在另一台服务器上恢复数据,而行并不总是落在与原始服务器相同的分区中时,这可能很有用。例如,如果分区列是 text 类型,而两个系统对用于排序该分区列的排序规则定义不同,就可能发生这种情况。
--lock-wait-timeout= timeout在转储开始时,不要无限等待获取共享表锁。如果无法在指定的 timeout 内锁定某个表,就让转储失败。超时可以用 SET statement_timeout 接受的任意格式指定。
--no-comments不要转储 COMMENT 命令。
--no-data不要转储数据。
--no-policies不要转储行安全性策略。
--no-publications不要转储发布。
--no-role-passwords不要转储角色密码。恢复后,角色的密码值将为 null,在设置密码之前,密码认证始终会失败。由于指定此选项时不需要密码值,角色信息将从目录视图 pg_roles 而不是 pg_authid 读取。因此,如果某些安全策略限制了对 pg_authid 的访问,此选项也会有帮助。
--no-schema不要转储模式(数据定义)。
--no-security-labels不要转储安全标签。
--no-statistics不要转储统计信息。这是默认行为。
--no-subscriptions不要转储订阅。
--no-sync默认情况下, pg_dumpall 会等待所有文件都被安全写入磁盘。该选项会使 pg_dumpall 立即返回而不等待,这样更快,但意味着随后如果操作系统崩溃,转储可能会损坏。通常,此选项适用于测试,但不应在从生产安装转储数据时使用。
--no-table-access-method不输出用于选择表访问方法的命令。使用此选项时,所有对象在恢复时都会使用当时默认的表访问方法创建。
--no-tablespaces不输出创建表空间的命令,也不输出用于为对象选择表空间的命令。使用此选项时,所有对象在恢复时都会创建在当时默认的表空间中。
--no-toast-compression不输出用于设置 TOAST 压缩方法的命令。使用此选项时,所有列都会以默认压缩设置恢复。
--no-unlogged-table-data不要转储不记录 WAL 的表的内容。此选项不影响是否转储表定义(模式);它只会抑制转储表数据。
--on-conflict-do-nothing为 INSERT 命令添加 ON CONFLICT DO NOTHING。此选项必须与 --inserts 或 --column-inserts 一起指定才有效。
--quote-all-identifiers强制为所有标识符加引号。当从其 PostgreSQL 主版本与 pg_dumpall 不同的服务器转储数据库时,或者当输出打算装入另一主版本服务器中时,建议使用此选项。默认情况下, pg_dumpall 只会给在其自身主版本中属于保留字的标识符加引号。处理其他版本服务器时,这有时会带来兼容性问题,因为它们的保留字集合可能略有不同。使用 --quote-all-identifiers 可以避免这类问题,但代价是转储脚本更难阅读。
--restrict-key= restrict_key在转储输出中,把给定字符串用作 psql 的 \restrict 键。若未指定限制键, pg_dumpall 会按需要随机生成一个。键只能包含字母数字字符。
--rows-per-insert= nrows将数据转储为 INSERT 命令(而不是 COPY )。它控制每个 INSERT 命令的最大行数。指定的值必须是大于零的数字。恢复过程中的任何错误将导致只有属于有问题的 INSERT 的行丢失,而不是整个表的内容。
--statistics转储优化器统计信息。
--statistics-only只转储统计信息,不转储模式(数据定义)或数据。会转储表、物化视图、外部表和索引的优化器统计信息。
--sequence-data在转储中包含序列数据。除非指定了 --no-data 、 --schema-only 或 --statistics-only ,否则这是默认行为。
--use-set-session-authorization输出符合 SQL 标准的 SET SESSION AUTHORIZATION 命令,而不是用 ALTER OWNER 命令来确定对象所有权。这会让转储更符合标准,但根据转储中对象的历史,可能无法正确恢复。
-? --help显示关于 pg_dumpall 命令行参数的帮助信息,并退出。
-d connstr --dbname= connstr以 连接字符串 形式指定用于连接服务器的参数;这些参数将覆盖任何冲突的命令行选项。
-h host --host= host指定运行数据库服务器的机器的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。默认值取自 PGHOST 环境变量(如果已设置);否则会尝试使用 Unix 域套接字连接。
-l dbname --database= dbname指定用于转储全局对象并发现还应转储哪些数据库的连接数据库名。如果未指定,则使用 postgres 数据库;如果该数据库不存在,则使用 template1 。
-p port --port= port指定服务器正在监听连接的 TCP 端口,或本地 Unix 域套接字文件扩展名。默认值取自 PGPORT 环境变量(如果已设置),否则使用编译时默认值。
-U username --username= username用于连接的用户名。
-w --no-password绝不发出密码提示。如果服务器要求密码认证,而又无法通过 .pgpass 文件等其他方式获得密码,则连接尝试将失败。在没有用户在场输入密码的批处理作业和脚本中,此选项很有用。
-W --password强制 pg_dumpall 在连接数据库之前提示输入密码。
--role= rolename指定一个角色名,用于创建转储。此选项会使 pg_dumpall 在连接数据库后发出 SET ROLE rolename 命令。当已认证用户(由 -U 指定)缺少 pg_dumpall 所需权限,但可以切换到具备所需权限的角色时,这很有用。有些安装环境不允许直接以超级用户身份登录,而使用此选项可以在不违反该策略的情况下完成转储。

环境变量

变量含义
PGHOST PGOPTIONS PGPORT PGUSER默认连接参数
PG_COLOR指定诊断消息是否使用颜色。可选值为 always 、 auto 和 never 。

相关条目

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8

版本比较

PostgreSQL 17 → 18: 属性变化。

以下差异保留原始字段名与英文源描述。

--- PostgreSQL 17
+++ PostgreSQL 18
@@ -11,7 +11,7 @@
   ],
   "options": [
     {
-      "description": "Dump only the data, not the schema (data definitions).",
+      "description": "Dump only the data, not the schema (data definitions) or statistics.",
       "names": [
         "-a",
         "--data-only"
@@ -41,13 +41,6 @@
         "--file= filename"
       ],
       "signature": "-f filename --file= filename"
-    },
-    {
-      "description": "Specify a filename from which to read patterns for databases excluded from the dump. The patterns are interpreted according to the same rules as --exclude-database . To read from STDIN , use - as the filename. The --filter option can be specified in conjunction with --exclude-database for excluding databases, and can also be specified more than once for multiple filter files. The file lists one database pattern per row, with the following format: exclude database PATTERN Lines starting with # are considered comments and ignored. Comments can be placed after an object pattern row as well. Blank lines are also ignored. See Patterns for how to perform quoting in patterns.",
-      "names": [
-        "--filter= filename"
-      ],
-      "signature": "--filter= filename"
     },
     {
       "description": "Dump only global objects (roles and tablespaces), no databases.",
@@ -145,7 +138,7 @@
       "signature": "--disable-dollar-quoting"
     },
     {
-      "description": "This option is relevant only when creating a data-only dump. It instructs pg_dumpall to include commands to temporarily disable triggers on the target tables while the data is restored. Use this if you have referential integrity checks or other triggers on the tables that you do not want to invoke during data restore. Presently, the commands emitted for --disable-triggers must be done as superuser. So, you should also specify a superuser name with -S , or preferably be careful to start the resulting script as a superuser.",
+      "description": "This option is relevant only when creating a dump with data and without schema. It instructs pg_dumpall to include commands to temporarily disable triggers on the target tables while the data is restored. Use this if you have referential integrity checks or other triggers on the tables that you do not want to invoke during data restore. Presently, the commands emitted for --disable-triggers must be done as superuser. So, you should also specify a superuser name with -S , or preferably be careful to start the resulting script as a superuser.",
       "names": [
         "--disable-triggers"
       ],
@@ -166,6 +159,13 @@
       "signature": "--extra-float-digits= ndigits"
     },
     {
+      "description": "Specify a filename from which to read patterns for databases excluded from the dump. The patterns are interpreted according to the same rules as --exclude-database . To read from STDIN , use - as the filename. The --filter option can be specified in conjunction with --exclude-database for excluding databases, and can also be specified more than once for multiple filter files. The file lists one database pattern per row, with the following format: exclude database PATTERN Lines starting with # are considered comments and ignored. Comments can be placed after an object pattern row as well. Blank lines are also ignored. See Patterns for how to perform quoting in patterns.",
+      "names": [
+        "--filter= filename"
+      ],
+      "signature": "--filter= filename"
+    },
+    {
       "description": "Use DROP ... IF EXISTS commands to drop objects in --clean mode. This suppresses “ does not exist ” errors that might otherwise be reported. This option is not valid unless --clean is also specified.",
       "names": [
         "--if-exists"
@@ -194,13 +194,27 @@
       "signature": "--lock-wait-timeout= timeout"
     },
     {
-      "description": "Do not dump comments.",
+      "description": "Do not dump COMMENT commands.",
       "names": [
         "--no-comments"
       ],
       "signature": "--no-comments"
     },
     {
+      "description": "Do not dump data.",
+      "names": [
+        "--no-data"
+      ],
+      "signature": "--no-data"
+    },
+    {
+      "description": "Do not dump row security policies.",
+      "names": [
+        "--no-policies"
+      ],
+      "signature": "--no-policies"
+    },
+    {
       "description": "Do not dump publications.",
       "names": [
         "--no-publications"
@@ -215,6 +229,13 @@
       "signature": "--no-role-passwords"
     },
     {
+      "description": "Do not dump schema (data definitions).",
+      "names": [
+        "--no-schema"
+      ],
+      "signature": "--no-schema"
+    },
+    {
       "description": "Do not dump security labels.",
       "names": [
         "--no-security-labels"
@@ -222,6 +243,13 @@
       "signature": "--no-security-labels"
     },
     {
+      "description": "Do not dump statistics. This is the default.",
+      "names": [
+        "--no-statistics"
+      ],
+      "signature": "--no-statistics"
+    },
+    {
       "description": "Do not dump subscriptions.",
       "names": [
         "--no-subscriptions"
@@ -290,6 +318,27 @@
         "--rows-per-insert= nrows"
       ],
       "signature": "--rows-per-insert= nrows"
+    },
+    {
+      "description": "Dump optimizer statistics.",
+      "names": [
+        "--statistics"
+      ],
+      "signature": "--statistics"
+    },
+    {
+      "description": "Dump only the statistics, not the schema (data definitions) or data. Optimizer statistics for tables, materialized views, foreign tables, and indexes are dumped.",
+      "names": [
+        "--statistics-only"
+      ],
+      "signature": "--statistics-only"
+    },
+    {
+      "description": "Include sequence data in the dump. This is the default behavior except when --no-data , --schema-only , or --statistics-only is specified.",
+      "names": [
+        "--sequence-data"
+      ],
+      "signature": "--sequence-data"
     },
     {
       "description": "Output SQL-standard SET SESSION AUTHORIZATION commands instead of ALTER OWNER commands to determine object ownership. This makes the dump more standards compatible, but depending on the history of the objects in the dump, might not restore properly.",

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回命令行工具 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。