Как сделать резервную копию уровня схемы в базе данных PostgreSQL и восстановить ее в другой базе данных? Есть ли для этого хоть одна команда? Например, могу ли я выполнить pg_dump и восстановить в одной строке?
Как мне сделать резервную копию и восстановить только схему в PostgreSQL?
Ответы (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
Ваше решение сбрасывает данные, а также схему.
- person Bogolt; 05.09.2018
@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
Замечу, что это дамп только структуры (без данных), но для всей базы данных. Это не для одной схемы (пространства имен в базе данных).
- 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
на самом деле мне нужна одна строка для резервного копирования и восстановления
- person ; 24.09.2012
Опять же, эта команда выводит соответствующие схемы, включая содержащиеся в них данные, не относящиеся к BLOB-объектам. Вам нужно
--schema-only
, чтобы исключить данные.
- person beldaz; 23.07.2015
Что не так с документацией для многих: документация может занять относительно много времени, в то время как SE может быстро получить ответ. Для быстрой задачи, такой как резервное копирование БД, чтение документации утомительно и утомительно, особенно когда эти документы такие же пугающие, как postgres '
- person HH- Apologize to Carole Baskin; 21.09.2018
-s
или --schema-only
для исключения данных из дампа Документация
person
Frédérick Baldo
schedule
11.10.2019