Как мне сделать резервную копию и восстановить только схему в PostgreSQL?

Как сделать резервную копию уровня схемы в базе данных PostgreSQL и восстановить ее в другой базе данных? Есть ли для этого хоть одна команда? Например, могу ли я выполнить pg_dump и восстановить в одной строке?


person Community    schedule 24.09.2012    source источник


Ответы (4)


pg_dump --schema=masters oldDB > masters1.sql
cat masters1.sql | psql newDB

or

в одной команде вы можете сделать это

pg_dump oldDB --schema masters  | psql -h localhost newDB;
person solaimuruganv    schedule 24.09.2012
comment
Ваше решение сбрасывает данные, а также схему. - person Bogolt; 05.09.2018
comment
@Bogolt Команды выгружают единственную схему, поскольку публично является схемой (то есть схемой как пространством имен в базе данных). Не схема, как в CREATE TABLE видах вещей (то есть не структура). К сожалению, в английском есть такая двусмысленность. Однако это все еще верный ответ. Пользователь не сказал, какой контекст он имеет в виду. - person Nux; 17.10.2019

Создайте резервную копию схемы и восстановите ее в системе для postgresql, как показано ниже:

Схема дампа для базы данных

pg_dump -s database_name > db.sql

Схема дампа для конкретной таблицы

pg_dump -s database_name -t table_name > db.sql 

Восстановите резервную копию схемы, используя команду ниже

psql -d database_name -h localhost -U postgres < path/db.sql
person Sumit Munot    schedule 13.05.2014
comment
Замечу, что это дамп только структуры (без данных), но для всей базы данных. Это не для одной схемы (пространства имен в базе данных). - person Nux; 17.10.2019

Что не так с документацией?

Пример из мануала:

Чтобы вывести все схемы, имена которых начинаются с востока или запада и заканчиваются на gsm, за исключением схем, имена которых содержат слово test:

$ pg_dump -n 'восток * gsm' -n 'запад * gsm' -N 'test' mydb> db.sql

person Frank Heikens    schedule 24.09.2012
comment
на самом деле мне нужна одна строка для резервного копирования и восстановления - person ; 24.09.2012
comment
Опять же, эта команда выводит соответствующие схемы, включая содержащиеся в них данные, не относящиеся к BLOB-объектам. Вам нужно --schema-only, чтобы исключить данные. - person beldaz; 23.07.2015
comment
Что не так с документацией для многих: документация может занять относительно много времени, в то время как SE может быстро получить ответ. Для быстрой задачи, такой как резервное копирование БД, чтение документации утомительно и утомительно, особенно когда эти документы такие же пугающие, как postgres ' - person HH- Apologize to Carole Baskin; 21.09.2018

-s или --schema-only для исключения данных из дампа Документация

person Frédérick Baldo    schedule 11.10.2019