如何仅对表而不对触发器和函数执行 pg_dump?

How to do a pg_dump for only tables only and not triggers and functions?

我想要的:
我想要一个 pg_dump 的数据库(让我们将数据库称为 'test')。 在这个 pg_dump 中,我只想要 tables 而没有 以下内容:数据、触发器、函数、序列等

我正在做的是为了得到我想要的:
我运行的命令如下:

pg_dump -U postgres -s test > dump_test.sql

我观察到的:
然后,当我尝试按如下方式在另一台服务器上恢复此转储时:

pg_dump -U postgres new_amazing_test < dump_test.sql

我注意到上述命令 运行 的部分输出如下:

CREATE TRIGGER
CREATE FUNCTION
CREATE SEQUENCE
CREATE INDEX

我真正想要的是:
我想要的只是 table 本身,而不是这些触发器、函数、序列和索引。我如何只获得 tables?

其他我有的东西tried/considered:

  1. 我试过这样做:

    pg_dump -U postgres -s -schema=\dtmvE test > dump_test.sql
    

    但它不起作用,因为模式需要是名称而不是 \d 模式。
    请参阅此处:https://www.postgresql.org/docs/13/app-pgdump.html 了解有关 -n pattern 选项的信息。

  2. 可以解决的一件事是使用多个开关,如下所示:

    pgdump -t mytable1 -t mytable2 -t mytable3 ... -t mytableN > dump_test.sql
    

    但是,上述解决方案不切实际,因为我的数据库中有 70 多个 table。

其他相关信息:
PostgreSQL 版本为 13.1
Ubuntu 版本 v16.04(我也在 Ubuntu v18.04 上试过)

我会在生成的转储中使用自定义格式的仅模式转储 (-F c -s) 和 运行 pg_restore -l 转储所有内容。这为您提供了 table 的内容。从该文件中删除除 table 之外的所有内容,并将其用作 pg_restore -L 的输入,以从您需要的存档中准确还原那些项目。

这可能不像您希望的那么简单,但肯定比编写大量 -t 选项简单,而且您可以将其自动化。