有没有办法使用 postgres 在数据库中创建单个表的备份?如何?这是否也适用于 pg_dump
命令?
使用 --table
告诉 pg_dump
它必须备份哪个表:
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname
如果你在 Ubuntu 上,
登录到您的 postgres 用户 sudo su postgres pg_dump -d
确保您正在执行 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 localhost -p 5432 -U postgres -d mydb -t my_table > backup.sql
您可以备份单个表,但我建议备份整个数据库,然后恢复您需要的任何表。备份整个数据库总是好的。
max(id)
更新序列的最后一个 id。这是有效的答案,我相信,看着生成的 sql,我可以恢复它。
如果您更喜欢图形用户界面,您可以使用 pgAdmin III (Linux/Windows/OS X)。只需右键单击您选择的表,然后“备份”。它将为您创建一个 pg_dump
命令。
https://i.stack.imgur.com/lu5jH.png
https://i.stack.imgur.com/FjVUk.png
https://i.stack.imgur.com/W21oi.png
你可以使用这个命令
pg_dump --table=yourTable --data-only --column-inserts yourDataBase > file.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_dump -h localhost -p 5432 -U <username> -d <dbname> -t <tablename> -Fc -f backup.out
不定期副业成功案例分享
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 --
psql -U username -d database -1 -f your_dump.sql
--ignore-version
有一个未知标志错误。 Prashant Kumar 的回答更简单,对我有用。