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
我有一个包含 ~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