Экспорт / Импорт базы Postgres
Делаю!
2023.12.19
$ psql --version
psql (PostgreSQL) 14.10 (Ubuntu 14.10-0ubuntu0.22.04.1)
$ pg_dump --version
pg_dump (PostgreSQL) 14.10 (Ubuntu 14.10-0ubuntu0.22.04.1)
pg_dump - снять дамп БД
// Если удаленный хост
// Значение в <> меняем на актуальные. После запуска утилиты будет запрошен пароль пользователя для доступа к СУБД.
$ pg_dump --host=<ServerName> --port=<5432> --dbname=<DBName> --username=<postgres> --format=c --file=<FullDumpName>
pg_restore - поднять дамп БД
// Если удаленный хост
// Значение в <> меняем на актуальные. После запуска утилиты будет запрошен пароль пользователя для доступа к СУБД
$ pg_restore --host=<ServerName> --port=<5432> --dbname=<DBName> --username=<postgres> --format=c <FullDumpName>
Если нужно покопать дамп, --format=c не нужно указывать
pg_dumpAll - снять полный дамп сервера с одномоментной упаковкой в архив GZip (Никогда не приходилось делатьg)
При использовании данного решения на сервере куда будет поднят данный дамп ВСЕ БД будут обновлены.
Здесь приведен пример снятия полного дампа СУБД с копированием его на другую машину средствами Linux и последующим подъемом.
// снятие дампа в архив
$ pg_dumpall -U postgres | gzip > /data/dump/dumpall.gz
// копирование дампа между серверами Linux, команду выполнять на сервере источнике дампа
$ scp /data/dump/dumpall.gz [email protected]:/data/dump/dumpall.gz
// подъем дампа без предварительной распаковки
$ zcat /data/dump/dumpall.gz | psql -U postgres postgres
Предыдущая дока
Экспорт базы Postgres
// Создание бекапа
$ pg_dump database_name > database_name_20160527.sql
// Если удаленный хост
// Значение в <> меняем на актуальные. После запуска утилиты будет запрошен пароль пользователя для доступа к СУБД.
$ pg_dump --host=<ServerName> --port=<5432> --dbname=<DBName> --username=<postgres> --format=c --file=<FullDumpName>
Импорт базы
$ su - postgres
$ psql
-- Если база не создана
$ CREATE DATABASE <db_name>;
exit
$ psql database_name < database_name_20160527.sql
https://www.netguru.co/tips/how-to-dump-and-restore-postgresql-database
Еще есть такой вариант:
$ cd <db_dump_dir>
-- Данные будут перезаписаны
$ pg_restore -d <db_name> myDump.dump -j 4 -c
Экспорт таблицы
$ pg_dump --no-owner -d <database_name> -t <table_name> > file.sql
$ pg_dump -h <адрес сервера СУБД> \
-U <имя пользователя> \
-p <порт> \
--no-owner -d <database_name> -t <table_name> > file.sql
Миграция схемы
// Export
$ pg_dump --host=<DataBaseHostName> --dbname=<DataBaseName> --schema=<SCHEMA_NAME> --username=<DataBaseUserName> > ~/tmp/<SCHEMA_NAME>.dmp
// Import
$ psql --host=<DataBaseHostName> --dbname=<DataBaseName> --username=<DataBaseUserName> < ~/tmp/<SCHEMA_NAME>.dmp
Миграция данных в Облако Yandex
https://practicum.yandex.ru/trainer/ycloud/lesson/7fcf670e-67d5-48ef-9456-527ba71e78f7/
//
// В этой команде при экспорте исключаются все данные, которые связаны с привилегиями и ролями.
$ pg_dump -h <адрес сервера СУБД> \
-U <имя пользователя> \
-p <порт> \
--schema-only \
--no-privileges \
--no-subscriptions \
-d <имя базы данных> -Fd -f /tmp/db_dump
$ pg_restore -Fd -v --single-transaction -s --no-privileges \
-h <адрес приемника> \
-U <имя пользователя> \
-p 6432 \
-d <имя базы данных> /tmp/db_dump