iai*_*ain 14 postgresql restore pg-restore
我正在使用 Heroku 的 Postgres 选项并从中下载了一个备份。我想将它恢复到一个新的数据库中,以便我可以查看它。我一直在尝试不同的命令,但收效甚微。我的第一次尝试:
$ sudo -u postgres psql < db/backups/myapp_2018-05-27.pg.dump
The input is a PostgreSQL custom-format dump.
Use the pg_restore command-line client to restore this dump to a database.
Run Code Online (Sandbox Code Playgroud)
所以我尝试:
$ sudo -u postgres pg_restore -d myapp3 -C db/backups/myapp_2018-05-27.pg.dump
pg_restore: [archiver (db)] connection to database "myapp3" failed: FATAL: database "myapp3" does not exist
Run Code Online (Sandbox Code Playgroud)
我真的不明白这个-C
选项。
-C --创建
在恢复之前创建数据库。如果还指定了 --clean,则在连接之前删除并重新创建目标数据库。
使用此选项时,以 -d 命名的数据库仅用于发出初始 DROP DATABASE 和 CREATE DATABASE 命令。所有数据都恢复到出现在存档中的数据库名称。
恢复到新数据库对我来说似乎是合乎逻辑的。我离题了……(也许这里已经正确解释了)
我尝试从另一个具有相同架构的较早版本的模板创建一个新数据库:
$ sudo -u postgres createdb -T myapp myapp3
$ sudo -u postgres pg_restore -d myapp3 -C db/backups/myapp_2018-05-27.pg.dump
pg_restore: [archiver (db)] Error while PROCESSING TOC:
<snip>
WARNING: errors ignored on restore: 5
Run Code Online (Sandbox Code Playgroud)
我收到很多关于不存在且未插入数据的用户的错误。
我也尝试过使用,template0
但这会带来有关架构的错误,正如我所期望的。
总之,我想从 Heroku Pg 备份恢复到一个新的数据库。我不知道我怎样才能避免有关索引和用户丢失等错误,并有模式做好准备。
-O
由于文档中的这一行,我也尝试过:
使用-O,任何用户名都可以用于初始连接,该用户将拥有所有创建的对象。
我似乎也误解了这一点,因为屏幕上又充满了错误。
编辑:基于-C
链接的答案,我设法恢复到一个神秘命名的数据库,但是当我运行重命名数据库命令 ( alter database rtyghjkuyhgh rename to my_app3
) 时,它会清空所有数据:(
任何帮助或见解,即使只是在正确方向上的一点,将不胜感激。
Postgres 版本 9.5.12
miv*_*ivk 11
让我们定义几个变量,使其余的更容易复制/粘贴(使用来自原始问题的名称)
old_db=myapp
new_db=myapp3
db_dump_file="backups/myapp_2018-05-27.pg.dump"
Run Code Online (Sandbox Code Playgroud)
以下假设您的备份是使用“自定义”格式创建的,如下所示:
pg_dump -U postgres -F custom "$old_db" > "$db_dump_file"
Run Code Online (Sandbox Code Playgroud)
要恢复$db_dump_file
到新的数据库名称$new_db
:
dropdb -U postgres --if-exists "$new_db"
createdb -U postgres -T template0 "$new_db"
pg_restore -U postgres -d "$new_db" "$db_dump_file"
Run Code Online (Sandbox Code Playgroud)
所以,答案是:
sudo -u postgres createdb -T myapp myapp5
sudo -u postgres pg_restore -d some_other_db -C -O db/backups/myapp_2018-05-27.pg.dump
$ psql
\c some_other_db
alter database ghji76yhjkj rename to myapp5
归档时间: |
|
查看次数: |
20665 次 |
最近记录: |