Se eu usar pg_dump para obter o esquema do meu banco de dados, recebo seções separadas para coisas como chaves, restrições etc., assim:
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);
Isso torna o dump inteiro incrivelmente detalhado. Como posso condensar o dump para que ele coloque tudo na seção create table?
Resposta curta: Não
A
pg_dump
ajuda não inclui uma opção documentada para permitir que você manipule a sintaxe de saída dessa maneira.Solução alternativa: escreva você mesmo
Você pode fazer um loop tabela por tabela usando
pg_dump
nativamente com o-t|--table
filtro ...... ou você pode usar um script personalizado mais sofisticado com algo como SQLAlchemy refection (como eu fiz na ocasião )
Mas...
Há razões pelas quais a solução alternativa pode falhar. é garantido apenas para produzir uma cópia
pg_dump
consistente, portátil e reimportável do seu banco de dados. Algumas das escolhas feitas para manter as definições de restrição separadas da tabela são por design para que não falhe ao recriar o banco de dados em determinados casos extremos.Qualquer script personalizado que você escrever provavelmente será menos estável do que a formatação interna, mas se você priorizar a limpeza do texto simples, poderá enlouquecer com ele.