Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 用于.sql文件的pg_还原的psql等效项_Postgresql_Psql_Pg Dump_Pg Restore - Fatal编程技术网

Postgresql 用于.sql文件的pg_还原的psql等效项

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

我只将数据库转储为*.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--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表名(如果存在)取而代之