我试图找到一种方法来备份我的数据库设计,而不包括存储在数据库中的数据.实际上,有人可能会说我想拥有一个包含数据库中所有"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 --host localhost --port 5432 --username "userName" --schema-only --verbose --file "file path" "db_dev_local"
Run Code Online (Sandbox Code Playgroud)
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)
这假定默认主机、端口、身份验证等。要指定非默认设置,请参阅文档
| 归档时间: |
|
| 查看次数: |
14167 次 |
| 最近记录: |