Как создать резервную копию одной таблицы в базе данных postgres? - PullRequest
119 голосов
/ 10 сентября 2010

Есть ли способ создать резервную копию одной таблицы в базе данных, используя postgres?И как?Это также работает с командой pg_dump?

Ответы [ 5 ]

164 голосов
/ 10 сентября 2010

Используйте --table, чтобы указать pg_dump, какую таблицу нужно создать для резервного копирования:

pg_dump --host localhost --port 5432 --username postgres --format plain --ignore-version --verbose --file "<abstract_file_path>" --table public.tablename dbname
66 голосов
/ 13 июля 2015

Если вы в Ubuntu,

  1. Войдите в систему под своим пользователем postgres sudo su postgres
  2. pg_dump -d <database_name> -t <table_name> > file.sql

Убедитесь, что вы выполняете команду, в которой у пользователя postgres есть права на запись (Пример: /tmp)

Редактировать

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

Вы можете использовать pg_dump --no-owner -d <database_name> -t <table_name> > file.sql

27 голосов
/ 14 октября 2014

pg_dump -h localhost -p 5432 -U postgres -d mydb -t my_table> backup.sql

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

9 способов использования pg_dump

11 голосов
/ 31 марта 2016

Если вы предпочитаете графический интерфейс пользователя, вы можете использовать pgAdmin III (Linux / Windows / OS X).Просто щелкните правой кнопкой мыши на таблице по вашему выбору, а затем «резервное копирование».Он создаст для вас команду pg_dump.

enter image description here

enter image description here

enter image description here

0 голосов
/ 24 мая 2019

В дополнение к ответу Фрэнка Хейкена, если вы хотите использовать INSERT операторы вместо copy from stdin, то вам следует указать --inserts флаг

pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname

Обратите внимание, что я пропустил флаг --ignore-version, потому что он устарел.

...