我付出了很多努力来理解 pg_dump 和 pg_restore 的过程,但仍然有几个关键的事情我不明白。我的目标是将模式从具有许多角色的生产数据库复制到我的本地复制,在那里我只需要使用 postgres 管理员用户。
我使用这个语法转储 myschema
pg_dump -h "pgprod" -p "5432" -d prod_db -U "myuser" -Fc -C --verbose --schema "myschema" -f .\test.backup
恢复
pg_restore -U postgres -h localhost -p 5432 -d localdb -C -v --no-acl --role=postgres test.backup
但我不知道如何忽略 prod_db 中存在的任何形式的角色。我也尝试了标志 –no-owner,结果相同。我完全卡在这一步,因为我不明白为什么会发生这种情况。运行 postgres 16
pg_restore: error: could not execute query: ERROR: role "user1" does not exist
Command was: ALTER TABLE public."mytable" OWNER TO user1;