Postgresql - 带有 x 个表的转储数据库 - 仅模式,但来自一个表的数据

Posted

技术标签:

【中文标题】Postgresql - 带有 x 个表的转储数据库 - 仅模式,但来自一个表的数据【英文标题】:Postgresql - Dump database with x tables - schema only but data from one table 【发布时间】:2017-06-09 02:16:05 【问题描述】:

想知道我的atm的一个小问题。

假设我有一个包含可变数量表的数据库,我想要转储该数据库但只转储表结构和一个特定表的数据。

当然,基本上可以这样做,但是命令会很长,而且我必须知道所有的表。

但是我需要一个命令而不知道名称或有多少其他表,只有我想要的数据应该相关的一个表,其他基本上只是牛,最后我想拥有这一切都在一个文件中。

期待阅读有关如何解决我的问题的一些建议或一些指示。真的很好奇:)

【问题讨论】:

【参考方案1】:

默认的pg_dump 输出格式是psql 脚本,因此您可以将它们连接起来:

pg_dump -d my_db --schema-only > dump.sql
pg_dump -d my_db -t my_table --data-only >> dump.sql

【讨论】:

没错,这是相当明显的解决方案。无论如何,谢谢,但主要是我希望通过更详尽的解决方案获得一些关于 postgresql 的经验。但当然,我也在寻找,最好是简短而简单的解决方案来解决我的问题。连接很好并且有效,但我更喜欢单线;) @Doeyo: 好吧,你可以用pg_dump...; pg_dump... > dump.sql 把它塞进一行... 除了pg_dump--schema-only,Postgres 没有提供任何导出数据库结构的方法和--data-only 选项是互斥的,所以我认为这很简单。 但是如果你想要一些“精心制作”的东西,这里有一些可怕的东西......你可以build a temporary database which matches your desired output,或suppress dumping of other tables via row security policies。请不要在您真正关心的任何系统上运行其中任何一个:) 是的,我已经想到了互斥性,这就是让我问这个问题的真正原因。感谢您的链接,我不会运行这些,但它们看起来有点有趣,所以我会抽出一些时间来检查它们。我现在要采用的解决方案是串联,因为它似乎是最合理的一个,而且无论如何它只是获得一组测试数据的临时解决方法。但这是一次有趣的学习经历,非常感谢。 如果我以压缩格式(使用 -Fc)进行转储,我可以进行这种连接吗?

以上是关于Postgresql - 带有 x 个表的转储数据库 - 仅模式,但来自一个表的数据的主要内容,如果未能解决你的问题,请参考以下文章

创建特定表的转储[重复]

PostgreSQL一个数据库最大支持多少个表?

PostgreSQL数据库备份和还原

使用 Codeigniter 生成带有 2 个表的 CSV

在 PostgreSQL 中使用 COPY FROM 命令在多个表中插入

PostgreSQL 从 9 个表继承到 1 个表以在 geoserver 中读取