postgresql pg_dump
Примеры Выгрузка базы данных mydb в файл SQL-скрипта:
$ pg_dump mydb > db.sql
Восстановление из ранее полученного скрипта в чистую базу newdb:
$ psql -d newdb -f db.sql
Выгрузка базы данных в формате custom:
$ pg_dump -Fc mydb > db.dump
Выгрузка базы данных в формате directory:
$ pg_dump -Fd mydb -f dumpdir
Выгрузка базы данных в формате directory в 5 параллельных потоков:
$ pg_dump -Fd mydb -j 5 -f dumpdir
Восстановление из архива в чистую новую базу данных newdb:
$ pg_restore -d newdb db.dump
Выгрузка отдельной таблицы mytab:
$ pg_dump -t mytab mydb > db.sql
Выгрузка всех таблиц, имена которых начинаются с emp и которые принадлежат схеме detroit, кроме таблицы employee_log:
$ pg_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sql
Выгрузка всех схем, имена которых начинаются с east или west, заканчиваются на gsm и не содержат test:
$ pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql
То же самое, но с использованием регулярного выражения:
$ pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql
Выгрузка всех объектов базы данных, кроме таблиц, имена которых начинаются с ts_:
$ pg_dump -T 'ts_*' mydb > db.sql
Чтобы указать имя в верхнем или смешанном регистре в ключе -t и связанных с ним, это имя нужно заключить в кавычки; иначе оно будет приведено к нижнему регистру (см. Шаблоны поиска). Но кавычки являются спецсимволом для оболочки, так что и их нужно заключать в кавычки. Так, чтобы выгрузить одну таблицу с именем в смешанном регистре, нужно написать примерно следующее:
$ pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql