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

时间:2017-04-05 10:46:19

标签: postgresql backup

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

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

我正在使用pgAdmin 4.1.3和PostgreSQL 9.6。

4 个答案:

答案 0 :(得分:9)

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

pg_dump -s databasename > file.dump

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

pg_dump documentation

答案 1 :(得分:0)

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

然后转储选项

选中Only schema为true

enter image description here

答案 2 :(得分:0)

pg_dump --host localhost --port 5432 --username "userName" --schema-only   --verbose --file "file path" "db_dev_local"

答案 3 :(得分:0)

pg_dump实用程序随Postgres一起分发到bin目录中。该实用程序接受许多options as documented,格式为:

pg_dump <options> <database-name>

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

> set DB_NAME=mydatabase
> pg_dump.exe --username=postgres --schema-only %DB_NAME% >%DB_NAME%-schema.sql

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

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

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

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

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

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

我通常使用mv_为MATERIALIZED VIEW添加前缀,因此要转储仅以“mv_ *”开头的关系的定义:

> pg_dump --username=postgres --schema-only --table=mv_* %DB_NAME% >%DB_NAME%-matviews.sql

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

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

> pg_dump --username=postgres --section=post-data %DB_NAME% >%DB_NAME%-post-data.sql

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