我从 pgAdmin 以纯文本格式导出了一个 postgres db,因为我想搜索整个 db 文本。然后我尝试恢复数据库,但它给出一个错误,说存档文件不是有效的存档文件。我该如何恢复数据库?
答案1
PLAIN 格式似乎是 SQL。引用文档:
pg_dump 不支持所有备份文件格式的所有选项。特别是,对于备份 blob,不能使用 PLAIN 格式。此外,PLAIN 文件无法解释,也无法使用 pgAdmin 恢复。PLAIN 格式将创建一个可以使用 psql 工具执行的 SQL 脚本。对于标准备份和恢复目的,建议使用 COMPRESS 和 TAR 选项。
我假设您可以使用类似以下方法进行恢复(在 UNIX 上):
psql < backup-file
或者从 psql 提示符内部(newdb 是一个空数据库)
psql newdb
newdb=# \i backup-file
您可能必须以特权用户“ postgres
”的身份运行(例如,在 unix 上)或将角色的适当凭据传递给它,psql
以便它可以创建数据库和角色以及备份文件指示的其他实体。创建数据库和角色语句可能不存在于备份中,具体取决于它是否具有整个服务器(它有)或只有一个数据库(您应该创建数据库和角色)。因此,您必须在恢复之前创建它们。