gpt4 book ai didi

postgresql - pg_dump 忽略用 -n 指定的模式

转载 作者:行者123 更新时间:2023-11-29 14:21:21 26 4
gpt4 key购买 nike

我正在使用 pg_dump (PostgreSQL) 9.2.4。

我有一个数据库,其中包含两个具有相同表名的不同模式。

- mydatabase
- schema_a
- mytable
- someothertable
- schema_b
- mytable
- another table

我想将 schema_a.mytable 和 schema_b.mytable 从 orig_host 复制到 new_host。我登录到 new_host 并输入:

% 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 数据库

但是 -n 开关不应该在这里工作吗?

最佳答案

来自manual -

The -n and -N switches have no effect when -t is used, because tables selected by -t will be dumped regardless of those switches, and non-table objects will not be dumped.

您的搜索路径中可能有 schema_a,这就是第一个命令起作用的原因。

关于postgresql - pg_dump 忽略用 -n 指定的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com