Postgres:仅转储模式但保留几个表的数据完好无损

Postgres: Dump schema-only but leave data intact for a few tables

我有一个包含 ~300 table 的数据库,我想只转储模式。需要注意的是,我还想保留大约 12 table 个数据。例如我有一个名为 country 的 table,其中包含我想保存在转储中的国家/地区名称。

我怎样才能做到这一点?

首先转储架构:

pg_dump -s -d dbname > /home/username/schema.sql

转储您需要下一个数据的表:

pg_dump -a -d dbname -t table1name -t table2name -t table3name > /home/username/data.sql

然后要在新服务器上恢复,运行 文件按相同顺序(模式优先)。

psql -U user -d dbname -f /home/username/schema.sql
psql -U user -d dbname -f /home/username/data.sql

如果需要,您还可以将第二个转储(数据)追加到第一个(架构)上,以创建一个大文件来使用 >> 而不是 > 进行还原。不过,您仍然需要 运行ning 两个 pg_dump 命令来执行此操作。

例如:

pg_dump -s -d dbname > /home/username/full.sql
pg_dump -a -d dbname -t table1name -t table2name -t table3name >> /home/username/full.sql
psql -U dbuser -d dbname -f /home/username/full.sql