微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PG_DUMP跳过PG_LARGEOBJECT中的某些项目?

如何解决PG_DUMP跳过PG_LARGEOBJECT中的某些项目?

我对Postgresql的了解比对Oracle的了解要新。因此,我将解释我在Oracle中的工作,然后询问是否有人知道在Postgresql中是否可以执行此操作。

我在Oracle中有300多个表。其中一些包含LOB。据我所知,其中两个占用大量的PDF空间,分别是 JP_PDFS JP_PRELIMPDFS 。当我需要该数据库DMP的副本以传输给其他人时,我不需要这些表的内容即可完成许多其他许多疑难解答步骤。因此,我可以将数据库导出为两个DMP文件一个带有exclude指令,另一个带有include + content指令:

expdp full=n schemas=mySchema directory=DMPs dumpfile=mySchema_PDFS_schema.dmp logfile=expdp1.log include=TABLE:"IN('JP_PDFS','JP_PRELIMPDFS')" content=Metadata_only

expdp full=n schemas=mySchema directory=DMPs dumpfile=mySchema_nopDFS.dmp logfile=expdp2.log exclude=TABLE:"IN('JP_PDFS','JP_PRELIMPDFS')"

不幸的是,所有LOB都存储在PG_LARGEOBJECT中。构成LOB的实际LO行的引用/指针存储在上述表中。但是,还有其他带有LOB的表,我 DO 需要通过pg_dump导出到.backup文件

我想要的是一种使用Postgresql在Oracle世界中完成工作的方式。我知道如何仅导出JP_PDFS和JP_PRELIMPDFS的模式。但是,有没有办法告诉pg_dump不在JP_PDFS和JP_PRELIMPDFS中引用的项目中包含PG_LARGEOBJECT的对象呢?

谢谢!

解决方法

不,大物体不属于任何人。要么全部转储(如果使用了-b的{​​{1}}选项,则转储整个数据库ot)或不进行任何转储。

大对象很麻烦,并且需要特殊的API。如果二进制数据的大小不超过1GB,请考虑为它们使用数据类型pg_dump。这更容易处理,并且可以按您期望的方式工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。