223

Is there a way to create a backup of a single table within a database using postgres? And how? Does this also work with the pg_dump command?

4

6 回答 6

297

Use --table to tell pg_dump what table it has to backup:

pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname
于 2010-09-10T07:39:00.987 回答
102

如果你在 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

于 2015-07-13T05:37:01.273 回答
54

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

您可以备份单个表,但我建议备份整个数据库,然后恢复您需要的任何表。备份整个数据库总是好的。

9 种使用 pg_dump 的方法

于 2014-10-14T17:10:34.923 回答
10

如果您更喜欢图形用户界面,您可以使用 pgAdmin III (Linux/Windows/OS X)。只需右键单击您选择的表,然后“备份”。它将pg_dump为您创建一个命令。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2016-03-31T00:52:34.167 回答
3

作为对 Frank Heiken 回答的补充,如果您希望使用INSERTstatements 而不是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标志,因为它已被弃用。

于 2019-05-24T11:27:47.313 回答
2

你可以使用这个命令

pg_dump --table=yourTable --data-only --column-inserts yourDataBase > file.sql

你应该改变你的表,你的数据库为你的情况

于 2020-09-03T14:22:37.553 回答