Ответ 1
Если он находится на том же сервере, вы просто используете команду CREATE DATABASE с параметром TEMPLATE. Например:
CREATE DATABASE newdb WITH TEMPLATE olddb;
Есть ли простой способ создать копию базы данных или схемы в PostgreSQL 8.1?
Я тестирую некоторое программное обеспечение, которое делает множество обновлений для конкретной схемы в базе данных, и я хотел бы сделать ее копию, чтобы я мог выполнять некоторые сравнения с оригиналом.
Если он находится на том же сервере, вы просто используете команду CREATE DATABASE с параметром TEMPLATE. Например:
CREATE DATABASE newdb WITH TEMPLATE olddb;
pg_dump
с опцией --schema-only
.
Если вам нужно скопировать схему из локальной базы данных в удаленную базу данных, вы можете использовать одну из следующих двух опций.
Вариант A
Скопируйте схему из локальной базы данных в файл дампа.
pg_dump -U postgres -Cs database > dump_file
Скопируйте файл дампа с локального сервера на удаленный сервер.
scp [email protected]:dump_file [email protected]:dump_file
Подключение к удаленному серверу.
ssh [email protected]
Скопируйте схему из файла дампа в удаленную базу данных.
psql -U postgres database < dump_file
Вариант B
Скопируйте схему непосредственно из локальной базы данных в удаленную базу данных без использования промежуточного файла.
pg_dump -h localhost -U postgres -Cs database | psql -h remotehost -U postgres database
Этот пост в блоге может оказаться полезным для вас, если вы хотите узнать больше о вариантах копирования базы данных с помощью pg_dump
.
здесь приведена ссылка на некоторые примеры резервного копирования и восстановления. Вы можете использовать резервную копию для восстановления на другой сервер или любой другой
Это можно сделать, выполнив следующую команду:
CREATE DATABASE [Database to create] WITH TEMPLATE [Database to copy] OWNER [Your username];
После заполнения имен вашей базы данных и вашего имени пользователя будет создана копия указанной базы данных. Это будет работать до тех пор, пока нет других активных подключений к базе данных, которую вы хотите скопировать. Если есть другие активные соединения, вы можете временно разорвать соединения, используя эту команду:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '[Database to copy]'
AND pid <> pg_backend_pid();
Хорошую статью, которую я написал для Chartio, которая более подробно описывает, как это сделать, можно найти здесь: https://dataschool.com/learn/how-to-create-a-copy-of-a-database. -в-PostgreSQL-помощь-PSQL