我想要什么:
我想要一个数据库的 pg_dump(我们称数据库为“测试”)。在这个 pg_dump 中,我只想要没有以下内容的表:数据、触发器、函数、序列等。
我正在做什么以获得我想要的:
我运行的命令如下:
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
我真正想要的是:
我想要的只是表本身,而不是这些触发器、函数、序列和索引。我怎样才能只得到桌子?
我尝试过/考虑过的其他事情:
我试过这样做:
pg_dump -U postgres -s -schema=\dtmvE test > dump_test.sql
但它不起作用,因为模式需要是名称而不是 \d 模式。有关选项的信息,
请参见此处:https ://www.postgresql.org/docs/13/app-pgdump.html。-n pattern
可以解决它的一件事是使用多个开关,如下所示:
pgdump -t mytable1 -t mytable2 -t mytable3 ... -t mytableN > dump_test.sql
但是,上述解决方案是不切实际的,因为我的数据库中有大约 70 多个表。
其他相关信息:
PostgreSQL 版本是 13.1
Ubuntu 版本 v16.04(我也在 Ubuntu v18.04 上试过这个)