Answers:
使用--table
告诉pg_dump
什么表它必须备份:
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname
psql -U username -d database -1 -f your_dump.sql
--ignore-version
。比较简单的Prashant Kumar的答案对我有用。
如果您使用的是Ubuntu,
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
pg_dump -t <table_name> <database_name> > file.sql
pg_dump -h本地主机-p 5432 -U postgres -d mydb -t my_table> backup.sql
您可以备份单个表,但我建议备份整个数据库,然后还原所需的任何表。备份整个数据库总是好的。
max(id)
表上的。这是有效的答案,我有信心查看生成的sql,我可以将其还原。
作为弗兰克·海肯(Frank Heiken)回答的补充,如果您希望使用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_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 --