PostgreSQL数据库设计的备份 - 没有数据

Hel*_*lge 6 postgresql backup

我试图找到一种方法来备份我的数据库设计,而不包括存储在数据库中的数据.实际上,有人可能会说我想拥有一个包含数据库中所有"CREATE Scripts"的文件.理想情况下,此文件可用于重新创建数据库(当然没有数据).

如何避免数据库备份中的数据?

我正在使用pgAdmin 4.1.3和PostgreSQL 9.6.

小智 18

您可以在psql(终端)中使用它:

pg_dump -s databasename > file.dump
Run Code Online (Sandbox Code Playgroud)

从pg_dump文档中," - s"只转储对象定义(schema),而不是数据.

pg_dump文档


Md *_*ker 8

pg_dump --host localhost --port 5432 --username "userName" --schema-only --verbose --file "file path" "db_dev_local"
Run Code Online (Sandbox Code Playgroud)

  • 解释命令的作用以及选择给定选项的原因将使此答案更具信息性和实用性。 (8认同)

isa*_*pir 7

TL;DR:--schema-only设置pg_dump.

pg_dump实用程序与 Postgres 一起发布在bin目录中。该实用程序接受许多已记录的选项,格式为:

pg_dump <options> <database-name>
Run Code Online (Sandbox Code Playgroud)

要具体回答此处的问题,请打开命令提示符窗口(*nix 中的 Shell),然后导航到 Postgresbin目录。然后发出以下命令(显示 Windows 语法):

> set DB_NAME=mydatabase
> pg_dump.exe --username=postgres --schema-only %DB_NAME% >%DB_NAME%-schema.sql
Run Code Online (Sandbox Code Playgroud)

环境DB_NAME变量纯粹是为了方便,名称可以内联以简单起见。

大多数情况下都需要该--username开关,因为您可能没有以有效的 Postgres 用户身份登录到操作系统。

--schema-only开关表示您只需要 DDL 语句,而不需要实际数据。

>%DATABASE_NAME%-schema.sql部分将控制台的输出重定向到名为 的文件%DATABASE_NAME%-schema.sql,在本例中为“mydatabase-schema.sql”。

生成的文件是有效的 SQL 脚本,可以通过任何有效的客户端执行该脚本以重新创建所有对象。

以下是其他一些有用的示例:

我通常在物化视图前加上 前缀mv_,因此要转储仅以“mv_*”开头的关系的定义,我使用:

> pg_dump --username=postgres --schema-only --table=mv_* %DB_NAME% >%DB_NAME%-matviews.sql
Run Code Online (Sandbox Code Playgroud)

对多种模式使用多个--table=参数。

要仅编写 POST-DATA 对象(例如索引、触发器等)的脚本,请使用--section=post-data

> pg_dump --username=postgres --section=post-data %DB_NAME% >%DB_NAME%-post-data.sql
Run Code Online (Sandbox Code Playgroud)

这假定默认主机、端口、身份验证等。要指定非默认设置,请参阅文档


Vao*_*sun 5

踩数据库-<工具->备份

然后转储选项

检查唯一模式是否正确

在此输入图像描述