如何将使用 pg_dump 创建的纯数据转储加载到另一个数据库?

Pam*_*orp 2 pgadmin pg-dump postgresql-9.4

我的开发服务器上有两个 PostgreSQL 数据库,一个用于开发,另一个用于测试 Web 应用程序的生产。当我使用早期版本的 PostgreSQL 时,我能够在 pgAdmin 中轻松创建我的 prod 数据库的 TAR 转储文件,并在选择首先清理数据库的选项后使用相同的 TAR 文件来恢复我的开发数据库。不久前,我将 pgAdmin 升级到了应该可以与 PostgreSQL 9.4 一起使用的版本(我认为是 1.20.0)。无论出于何种原因,我无法恢复该版本中的文件。我尝试过 TAR 和 SQL,但恢复按钮始终受到保护。

我决定使用pg_dump并创建一个仅包含生产数据库数据插入语句的 SQL 文件。我想做的是复制我在 pgAdmin 中能够做的事情:清理我的开发数据库并将我的pg_dumpSQL 文件加载到其中。

我已经搜索过,但到目前为止我还没有找到任何如何在 pgAdmin 或终端中执行此操作的示例。

dez*_*zso 5

如果您对恢复时重新创建表感到满意(我认为没有理由不高兴:),那么您可以使用以下--clean选项

-c --干净

在输出创建数据库对象的命令之前,输出命令以清理(删除)数据库对象。(除非--if-exists还指定,否则如果目标数据库中不存在任何对象,则还原可能会生成一些无害的错误消息。)

该选项仅对纯文本格式有意义。对于存档格式,您可以在调用时指定该选项 pg_restore

在创建纯文本转储时使用它pg_dump,或者pg_restore在使用任何其他格式时使用它。在这两种情况下,您都需要完整转储,因为纯数据转储将缺少创建表的信息。

注意:不要INSERT在转储中使用语句(--inserts在 中执行此操作pg_dump)。它几乎总是比依赖默认COPY功能慢。