我只将我的数据库转储为 *.sql 文件而不是 *.dump 文件。因此,pg_restore
命令都不起作用。我一直在阅读答案,我发誓大多数人都有阅读障碍,哈哈
我要求在psql
中使用通用pg_restore
命令行方法来还原数据库。我无意将我的数据库转储为 *.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
对于 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