我只将我的数据库转储为* .sql文件而不是* .dump文件。因此,pg_restore
命令无效。我一直在阅读答案,我发誓,大多数人都有阅读障碍lol
我要求在psql
中使用公共pg_restore
commandLine方法来恢复数据库。
我无意将我的数据库转储为* .dump。
我的问题是:
什么相当于:
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d my_db db/latest.dump
使用psql
所以...
类似的东西:
psql --verbose --clean --no-acl --no-owner -h localhost -U myuser -d my_db db/latest.sql
答案 0 :(得分:1)
使用SQL转储时,您需要确定是否要在转储数据库时删除目标对象,而不是在导入时。
所以,你需要使用:
pg_dump --clean ....
然后SQL转储将包含必要的DROP
语句。
另一种选择是在导入之前运行drop owned by current_user
。但是,这要求所有内容都由执行导入的用户拥有(因此您无法像postgres
那样运行导入)
这可以与运行SQL转储结合使用:
psql -U your_user -d your_db -c 'drop owned by current_user' -f your_dump.sql