Есть ли способ экспортировать сжатую схему PostgreSQL? - PullRequest
5 голосов
/ 02 марта 2011

Когда я создаю таблицу в PostgreSQL, используемый мной SQL выглядит следующим образом:

CREATE TABLE domain (
    id serial,
    domain character varying(60) NOT NULL,
    banned boolean,
    created timestamp NOT NULL
);

Однако, когда я экспортирую схему, я получаю целую несжатую версию с мусором, например, кто владеет таблицей иполная последовательность.В любом случае можно получить экспорт без хотя бы части владельца?

CREATE TABLE domain (
    id integer NOT NULL,
    domain character varying(60) NOT NULL,
    banned boolean,
    created timestamp without time zone NOT NULL
);

ALTER TABLE public.domain OWNER TO postgres;

CREATE SEQUENCE domain_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;

ALTER TABLE public.domain_id_seq OWNER TO postgres;
ALTER SEQUENCE domain_id_seq OWNED BY domain.id;
SELECT pg_catalog.setval('domain_id_seq', 3, true);

Главное, что я хочу иметь возможность передавать схему другим (которые могут даже не использовать PostgreSQL) безнеобходимость вручную редактировать файл и удалять части, которые являются специфическими для моего пользователя БД.Короткую стрелку также намного легче читать.

1 Ответ

4 голосов
/ 02 марта 2011

Что-то вроде этого поможет вам пройти часть пути:

pg_dump --schema-only       \
        --no-owner          \
        --no-privileges     \
        --table=$TABLE_NAME \
        $DATABASE_NAME

У вас все равно будет все SET... вверху, а также ограничения, последовательности и индексы в конце.

Возможно, вы сможете втиснуть вывод

echo "\d $TABLENAME" | psql -d $DATABASE -U $USER

в то, что вам нужно, с помощью небольшого количества сценариев.

Вы также можете искать в системных таблицахполучить то, что вы хотите, но это, вероятно, будет больше работы, чем отрубать вручную середину того, что pg_dump должен сказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...