Есть ли способ создать резервную копию одной таблицы в базе данных с помощью postgres? И как? Это также работает с командой pg_dump?
Как создать резервную копию одной таблицы в базе данных postgres?
Ответ 1
Используйте --table
чтобы сообщить pg_dump
какую таблицу нужно сделать для резервного копирования:
pg_dump --host localhost --port 5432 --username postgres --format plain --ignore-version --verbose --file "<abstract_file_path>" --table public.tablename dbname
Ответ 2
Если вы находитесь на Ubuntu,
- Войти к вашему пользователю postgres
sudo su postgres
-
pg_dump -d <database_name> -t <table_name> > file.sql
Убедитесь, что вы выполняете команду, в которой пользователь postgres
имеет права на запись (пример: /tmp
)
Edit
Если вы хотите сбросить .sql на другом компьютере, вам может потребоваться пропустить информацию о владельце, сохраненную в файле .sql.
Вы можете использовать pg_dump --no-owner -d <database_name> -t <table_name> > file.sql
Ответ 3
pg_dump -h localhost -p 5432 -U postgres -d mydb -t my_table> backup.sql
Вы можете сделать резервную копию одной таблицы, но я бы предложил создать резервную копию всей базы данных, а затем восстановить любую нужную таблицу. Всегда хорошо иметь резервную копию всей базы данных.
Ответ 4
Если вы предпочитаете графический пользовательский интерфейс, вы можете использовать pgAdmin III (Linux/Windows/OS X). Просто щелкните правой кнопкой мыши по таблице по вашему выбору, затем выберите "backup". Он создаст для вас команду pg_dump
.
Ответ 5
В дополнение к ответу Фрэнка Хайкена, если вы хотите использовать операторы 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
флаг --ignore-version
, потому что он устарел.