Postgresql 用于.sql文件的pg_还原的psql等效项
我只将数据库转储为*.sql文件,而不是*.dump文件。因此,Postgresql 用于.sql文件的pg_还原的psql等效项,postgresql,psql,pg-dump,pg-restore,Postgresql,Psql,Pg Dump,Pg Restore,我只将数据库转储为*.sql文件,而不是*.dump文件。因此,pg_restore命令都不起作用。我一直在阅读答案,我发誓大多数人都有阅读障碍 我要求在psql中使用相同的pg_restore命令行方法来恢复数据库。 我无意将我的数据库作为*.dump转储 我的问题是: 等同于什么: pg_restore--verbose--clean--no acl--no owner-h localhost-U myuser-d my_db/latest.dump 使用psql 所以 大致如下: psql
pg_restore
命令都不起作用。我一直在阅读答案,我发誓大多数人都有阅读障碍
我要求在psql
中使用相同的pg_restore
命令行方法来恢复数据库。
我无意将我的数据库作为*.dump转储
我的问题是:
等同于什么:
pg_restore--verbose--clean--no acl--no owner-h localhost-U myuser-d my_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
语句
另一个选项是在执行导入之前运行。但是,这要求所有内容都归执行导入的用户所有(因此您不能以例如postgres
的方式运行导入)
这可以与运行SQL转储相结合:
psql -U your_user -d your_db -c 'drop owned by current_user' -f your_dump.sql
没有等价物
psql-h localhost-U myuser-d my_db-f db/latest.sql
应该也可以工作,但是,似乎我需要删除模式、函数、表、键值等,因为这些项已经存在,所以尝试不会工作。。。除了进入*.sql文件本身并重写整个内容之外。。。这意味着必须有更好的方法使用pg_dump
转储到带有drop if exists命令的*.sql文件如果您需要备份文件上的逻辑,请使用自定义pg_转储格式。如果您使用纯格式-您不能有任何逻辑,现在我只是处理添加DROP表名(如果存在)代码>取而代之