Создать новую схему и скопировать весь объект из старой схемы в новую схему без данных таблицы - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу создать новую схему (NPS).

У меня есть существующая схема (public).

После создания NPS я хочу скопировать всесодержимое схемы public для схемы NPS без табличных данных.

и существующие последовательности public должны быть установлены в 0 в схеме NPS.

Комментарии и ответы приветствуются.

1 Ответ

0 голосов
/ 27 ноября 2018

Вы используете pg_dump -F c -s -n public <yourdatabase>, чтобы получить только определения объектов.

Восстановить дамп в другую базу данных, переименовать схему public в nps (не использовать верхний регистр!), Установитьпри необходимости разрешите схему и создайте дамп снова.

Восстановите дамп в исходную базу данных.

Чтобы ответить на ваш вопрос, если это приведет к сбросу последовательностей, простой эксперимент покажет вам, что он делает:

CREATE SEQUENCE testseq;

SELECT nextval('testseq');
 nextval 
---------
       1
(1 row)

SELECT nextval('testseq');
 nextval 
---------
       2
(1 row)

Тогда сбросьте и убедитесь:

pg_dump -n laurenz -t testseq -s test

...
CREATE SEQUENCE laurenz.testseq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE laurenz.testseq OWNER TO laurenz;

--
-- PostgreSQL database dump complete
--
...