有时,当从备份文件恢复多模式数据库时,您可能出于某种原因想要排除一个或多个模式。
例如,如果您出于开发目的而恢复一个巨大的数据库,您可能不想恢复您知道拥有大量数据的架构,这可能会导致恢复过程花费很长时间。
pg_restore命令行实用程序允许在从pg_dump创建的备份文件恢复数据库时排除一个或多个模式。您可以使用其-N
或--exclude-schema
选项来恢复指定模式中的对象。
PostgreSQL支持各种有用的数据库备份和恢复功能。在本指南中,我们将展示如何在从备份文件恢复PostgreSQL多架构数据库时排除架构。
恢复 PostgreSQL 数据库时排除架构
在开始恢复过程之前,如果您在新服务器上执行恢复过程,请确保在服务器上创建备份中定义的数据库所有者或用户:
$ pg_restore -d myappdb -N schema_name myappdb.dump 或者 $ pg_restore -d myappdb --exclude-schema=schema_name myappdb.dump
在上面的命令中,标志:
-d
– 用于指定目标数据库名称。-N
– 指定在恢复过程中要排除的模式的名称。myappdb.dump
– 是数据库备份文件名。请注意,该文件应采用pg_dump创建的非纯文本格式之一。
要排除多个架构,请使用多个-N
标志,如图所示。
$ pg_restore -d myappdb -N schema_name1 -N schema_name2 -N schema_name3 myappdb.dump 或者 $ pg_restore -d myappdb --排除架构=架构名称1 --排除架构=架构名称2 --排除架构=架构名称3 myappdb.dump
如果该选项指定的数据库不存在,您可以告诉pg_restore创建该数据库,方法是使用或开关,如下所示:-d
-C
--create
$ pg_restore -d myappdb -C -N schema_name myappdb.dump 或者 $ pg_restore -d myappdb --create -N schema_name myappdb.dump
您应该注意,如果-C
使用开关,如前面的命令所示,使用开关指定的数据库名称myappdb-d
仅用于运行初始“ DROP DATABASE myappdb ”和“ CREATE DATABASE myappdb ”命令,所有数据都会恢复到备份文件中存在的数据库名称。
要在连接到目标数据库之前删除或清理并重新创建目标数据库,请使用--clean
所示选项。
$ pg_restore --clean -d testdb -n schema_name myappdb.dump
默认情况下,如果在恢复过程中运行SQL命令时遇到错误, pg_restore将继续该过程并仅显示错误。
您可以通过添加或选项让pg-restore在遇到错误时终止:-e
--exit-on-error
$ pg_restore -e -d testdb -n schema_name myappdb.dump 或者 $ pg_restore --出错时退出 -d testdb -n schema_name myappdb.dump
为了使恢复过程更快,您可以使用-j
或--number-of-jobs
来并发运行。此选项可确保使用最多指定数量的作业的并发会话同时执行创建索引、创建约束或加载数据等步骤。
但是,它很大程度上取决于客户端、服务器和网络上的 CPU 核心数量和磁盘配置:
$ pg_restore -j 4 --clean -d testdb -n schema_name myappdb.dump 或者 $ pg_restore --作业数=4 --clean -d testdb -n schema_name myappdb.dump
您可以通过查看其手册页来了解有关pg_restore的更多信息,如图所示。
$ 人 pg_restore
这就是我们在本简短指南中为您提供的全部内容。如果您有任何意见或问题,请使用下面的反馈表与我们联系。