Подтвердить что ты не робот

PostgreSQL как создать копию базы данных или схемы?

Есть ли простой способ создать копию базы данных или схемы в PostgreSQL 8.1?

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

4b9b3361

Ответ 1

Если он находится на том же сервере, вы просто используете команду CREATE DATABASE с параметром TEMPLATE. Например:

CREATE DATABASE newdb WITH TEMPLATE olddb;

Ответ 2

pg_dump с опцией --schema-only.

Ответ 3

Если вам нужно скопировать схему из локальной базы данных в удаленную базу данных, вы можете использовать одну из следующих двух опций.

Вариант 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.

Ответ 4

здесь приведена ссылка на некоторые примеры резервного копирования и восстановления. Вы можете использовать резервную копию для восстановления на другой сервер или любой другой

Ответ 5

Это можно сделать, выполнив следующую команду:

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