Есть ли способ создать резервную копию одной таблицы в базе данных с помощью postgres? И как? Это также работает с командой pg_dump?
Как создать резервную копию одной таблицы в базе данных postgres?
Ответы (7)
Используйте --table
, чтобы указать pg_dump
, какую таблицу нужно резервировать:
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname
pg_restore --host localhost --port 5432 --username postgres --dbname "anydb" --table public.tablename -Ft --verbose "/path/filename.backup"
, но вышло: pg_restore: [tar archiver] corrupt tar header found in --
- person Anderson Dorregaray Linares; 05.12.2016
--ignore-version
. Ответ Прашанта Кумара, который проще, сработал для меня.
- person JL Peyret; 28.12.2019
pg_restore
, вам нужно добавить флаг -c
, -d
или -t
. Как объясняется в Postgres Docs, --format plain
(по умолчанию, краткая форма -p
), не работает с pg_restore. Например. добавьте -Fc
в pg_dump и -Fc
в pg_restore, чтобы указать формат дампа.
- person Alex; 12.03.2020
pg_dump
приложении. На моем сервере Centos 7 я нашел его в каталоге /usr/pgsql-11/bin
- person Juan Salvador; 17.08.2020
abstract_file_path
означает путь в вашей локальной системе, по которому вы хотите, чтобы вывод шел. Если вы его опустите, он перейдет в стандартный вывод.
- person Eric LeBlanc; 29.09.2020
Если вы используете Ubuntu,
- Войдите в систему под своим пользователем postgres
sudo su postgres
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
pg_dump -d <database_name> > file.sql
- person Sri Harsha Kappala; 17.07.2015
pg_dump -h localhost -p 5432 -U postgres -d mydb -t моя_таблица> backup.sql
Вы можете сделать резервную копию одной таблицы, но я бы предложил сделать резервную копию всей базы данных, а затем восстановить любую таблицу, которая вам нужна. Всегда хорошо иметь резервную копию всей базы данных.
9 способов использования pg_dump
max(id)
в моей таблице. это ответ, который сработал, и я уверен, глядя на сгенерированный sql, что я мог бы его восстановить.
- person JL Peyret; 28.12.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
, потому что он устарел.
вы можете использовать эту команду
pg_dump --table=yourTable --data-only --column-inserts yourDataBase > file.sql
вы должны изменить yourTable, yourDataBase для вашего случая
Я пытался запустить pg_dump из командной строки psql, и мне не удалось отследить выходной файл где-либо в моем ящике ubuntu 20.04. Я пытался найти по find / -name "myfilename.sql"
.
Вместо этого, когда я попробовал pg_dump из / home / ubuntu, я нашел свой выходной файл в / home / ubuntu.