PG_DUMP 跳过 PG_LARGEOBJECT 中的某些项目?

PG_DUMP to Skip Certain Items in PG_LARGEOBJECT?

我对 PostgreSQL 的了解比 Oracle 新。所以,我将解释我在 Oracle 中所做的事情,然后询问是否有人知道是否有办法在 PostgreSQL 中执行此操作。

我在 Oracle 中有 300 多个表。其中一些包含 LOB。我知道的其中两个消耗大量 space 来存储 PDF,称为 JP_PDFSJP_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 行的 references/pointers 存储在上述表中。但是,还有其他带有 LOB 的表,我 DO 需要使用 pg_dump.

导出到 .backup 文件

我想要的是一种使用 PostgreSQL 完成我在 Oracle 世界中所做的事情的方法。我只知道如何为 JP_PDFS 和 JP_PRELIMPDFS 导出模式。但是,有没有办法告诉 pg_dump 不要将 PG_LARGEOBJECT 中的对象包含在 JP_PDFS 和 JP_PRELIMPDFS 中的引用项中?

谢谢!

不,大型对象不“属于”任何人。要么全部转储(如果使用 pg_dump-b 选项,则转储完整数据库)或 none.

大物件比较笨重,需要特殊的API。如果二进制数据的大小不超过 1GB,请考虑为它们使用 bytea 数据类型。这更容易处理,并且会像您期望的那样工作。