TL;DR:将--schema-only 设置为pg_dump。
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 脚本,可以通过任何有效的客户端执行以重新创建所有对象。
这里有几个其他有用的例子:
我通常在 MATERIALIZED VIEW 前面加上 mv_,因此只转储以“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