Postgresql pg_dump忽略用-n指定的架构
我正在使用pg_转储(PostgreSQL)9.2.4 我有一个具有两个不同模式的数据库,它们具有相同的表名Postgresql pg_dump忽略用-n指定的架构,postgresql,Postgresql,我正在使用pg_转储(PostgreSQL)9.2.4 我有一个具有两个不同模式的数据库,它们具有相同的表名 - mydatabase - schema_a - mytable - someothertable - schema_b - mytable - another table 我想将schema_a.mytable和schema_b.mytable从原始主机复制到新主机。我登录到新主机并键入: % psql
- mydatabase
- schema_a
- mytable
- someothertable
- schema_b
- mytable
- another table
我想将schema_a.mytable和schema_b.mytable从原始主机复制到新主机。我登录到新主机并键入:
% psql -c "drop schema schema_a cascade" mydatabase
% psql -c "create schema schema_a" musicbrainz_db
% pg_dump -h orig_host -n schema_a -t mytable mydatabase | psql mydatabase
没问题,但当我对schema_b执行相同操作时,会出现冲突:
% psql -c "drop schema schema_b cascade" mydatabase
% psql -c "create schema schema_b" musicbrainz_db
% pg_dump -h orig_host -n schema_b -t mytable mydatabase | psql mydatabase
ERROR: relation "artist" already exists
我通过将最后一个命令转储到一个文件来确认它正在将搜索路径设置为schema_a,这导致了失败。如果我这样做的话,它似乎确实起作用了
%pg_dump-h orig_host-t schema_b.mytable mydatabase | psql mydatabase
但是-n开关不应该在这里工作吗?看看生成的SQL。我相信你应该看到的是:
我猜其目的是模式S很可能依赖于一个或两个其他表,因此您可以将它们全部转储到一起。看看生成的SQL。我相信你应该看到的是: