Чтобы создать дамп схемы и данных нужно, не заходя в базу данных (т.е не используя команду psql -U rolename), написать в консоль команды:
pg_dump -U rolename -d dbname -s -W > /home/…/…/db_schema.sql
pg_dump -U rolename -d dbname -a -W > /home/…/…/db_data.sql
Первая команда отвечает за создание схемы БД, а вторая команда отвечает за создание файла с данными для заполнения БД.
Расшифровка значений:
*rolename – роль на сервере, например postgres.
*dbname – название базы данных из которой будут выгружены дампы.
*/home/…/…/db_data.sql – каталог(путь для сохранения) БД.
Важное уточнение: можно не указывать каталог(путь) для сохранения БД, а просто указать файл с расширением .sql, если Вы не собираетесь выгружать БД на другие ресурсы, а так же если в процессе импорта в новую БД возникла ошибка «Нет такого файла или каталога».
Чтобы создать новую БД, необходимо для начала войти на сервер (т.е использовать команду psql -U rolename) и написать команду:
create database newdbname;
Если вы находитесь внутри списка с базами данных, необходимо выйти с помощью команды /q. Затем, чтобы импортировать данные с уже созданного дампа, необходимо написать команды с теми файлами, которые вы создали:
psql -U rolename -d newdbname -W -f db_schema.sql
psql -U rolename -d newdbname -W -f db_data.sql
Чтобы проверить, успешно ли вы перенесли дамп БД и в порядке ли ваши данные нужно снова зайти на сервер со списком БД и написать следующую команду:
\c newdbname - переходим к базе данных, в которую вы загрузили дамп.
\dt – открываем список таблиц и проверяем, в порядке ли наши таблицы.
select * from table; - переходим к таблице и проверяем, в порядке ли наши данные.