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 个表的转储数据库 - 仅模式,但来自一个表的数据的主要内容,如果未能解决你的问题,请参考以下文章