如果您拥有旧的postgresql系统的完整数据目录(且版本相同或仅差一个修订号),则可以尝试将其放置在新的postgresql安装中的数据目录中,以替换原有的数据目录。(当然,在执行此操作之前,请先停止postgres服务器。)这基本上是在升级postgresql时使用的相同过程,无需备份和恢复。编辑:如评论中所指出的那样,我假设不仅版本相同(或几乎相同),而且架构也相同(32-64位,Linux-Windows等)。
在您的情况下,您已经拥有了文件,但如果没有的话,也许只有可能,您可以通过数据库日志来做些什么。您可以尝试查看数据库中语句的日志,通常位于/var/log/postgresql/postgresql.log中,如果存在或接近,并且在此之前设置了log_statements = 'mod'或'all',则可以恢复部分数据。逐个表格搜索,在数据库的所有或最近的历史记录中搜索插入到这些表格中的内容。您可以使用一些Unix工具剪切文本,以获取仅语句并在每个语句的结尾添加";",以及其他重要的查询,如删除等。但是您必须逐个表格进行操作,并且数据必须存在,而且数据库不能长时间运行而没有备份。在某些情况下,您只需要最后一次操作或类似的东西就可以挽救局面。然而,这仅适用于阿波罗13号灾难时刻,永远无法替代良好的备份。