如何在 postgres 数据库中创建单个表的备份?
有没有办法使用 postgres 创建数据库中单个表的备份?又如何呢?这也适用于 pg_dump 命令吗?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
使用
--table
告诉pg_dump
需要备份哪个表:Use
--table
to tellpg_dump
what table it has to backup:如果您使用的是 Ubuntu,
sudo su postgres
pg_dump -d; -t <表名> > file.sql
确保您在
postgres
用户具有写入权限的情况下执行命令(例如:/tmp
)编辑
如果您想将 .sql 转储到另一台计算机上,您可能需要考虑跳过将所有者信息保存到 .sql 文件中。
您可以使用 pg_dump --no-owner -d; -t <表名> >文件.sql
If you are on Ubuntu,
sudo su postgres
pg_dump -d <database_name> -t <table_name> > file.sql
Make sure that you are executing the command where the
postgres
user have write permissions (Example:/tmp
)Edit
If you want to dump the .sql in another computer, you may need to consider skipping the owner information getting saved into the .sql file.
You can use
pg_dump --no-owner -d <database_name> -t <table_name> > file.sql
您可以备份单个表,但我建议备份整个数据库,然后恢复您需要的表。备份整个数据库总是好的。
9种使用方法pg_dump
You can take the backup of a single table but I would suggest to take the backup of whole database and then restore whichever table you need. It is always good to have backup of whole database.
9 ways to use pg_dump
如果您喜欢图形用户界面,可以使用 pgAdmin III (Linux/Windows/OS X)。只需右键单击您选择的表,然后“备份”即可。它将为您创建一个 pg_dump 命令。
If you prefer a graphical user interface, you can use pgAdmin III (Linux/Windows/OS X). Simply right click on the table of your choice, then "backup". It will create a
pg_dump
command for you.你可以使用这个命令,
你应该将你的表,你的数据库更改为你的情况
you can use this command
you should change yourTable, yourDataBase to your case
作为 Frank Heiken 答案的补充,如果您希望使用 INSERT 语句而不是从 stdin 复制,那么您应该指定 --inserts标志
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "" --table public.tablename --inserts dbname
请注意,我省略了
--ignore-version
标志,因为它已被弃用。As an addition to Frank Heiken's answer, if you wish to use
INSERT
statements instead ofcopy from stdin
, then you should specify the--inserts
flagpg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname
Notice that I left out the
--ignore-version
flag, because it is deprecated.我是这样做的。
如果您不希望发生这种情况,您可以编辑此 sql 文件并删除表创建命令和其他字段的设置,然后运行以下命令将数据插入其他数据库中。
Here is how I do it.
You can edit this sql file and remove the table creation commands and setting of other fields if you don't want that to happen and later run the below command to insert the data in the other database.
使用以下命令获取表转储的压缩版本:
Use the following command to get the compressed version of the table dump :