如果我使用 pg_dump 从我的数据库中获取模式,我会得到单独的部分,例如键、约束等,如下所示:
CREATE TABLE public.account (
id uuid NOT NULL,
db_version bigint,
email_address character varying(255) NOT NULL,
full_name character varying(255) NOT NULL
);
....and then later....
ALTER TABLE ONLY public.account
ADD CONSTRAINT account_pkey PRIMARY KEY (id);
这使得整个转储变得非常冗长。如何压缩转储以便将所有内容都放在创建表部分?
简短的回答:没有
该
pg_dump
帮助不包含允许您以这种方式操作输出语法的记录选项。解决方法:自己写
您可以使用过滤器
pg_dump
本地循环逐表循环...-t|--table
...或者您可以使用更高级的自定义脚本和SQLAlchemy 反射 (就像我有时所做的那样)
但...
解决方法可能会让您失败是有原因的。
pg_dump
仅保证为您生成一致的、可移植的、可重新导入的数据库副本。它为使约束定义与表分开而做出的一些选择是设计使然,这样它就不会在某些边缘情况下重新创建数据库。您编写的任何自定义脚本都可能不如内置格式稳定,但如果您优先考虑明文的清洁度,那么您可以随意使用它。