pg_restore旧数据库备份

问题描述 投票:1回答:2

在Ubuntu 16.04上运行9.5不确定备份了什么数据库,我认为8.4

当我运行pg_restore时,我得到了

pg_restore: implied data-only restore
--
-- PostgreSQL database dump
--


-- Started on 30608-10-13 11:53:01 MDT

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'SQL_ASCII';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET row_security = off;

-- Completed on 2018-09-06 11:12:06 MDT

--
-- PostgreSQL database dump complete
--

当我运行pg_restore -l

;
; Archive created at 30608-10-13 11:53:01 MDT
;     dbname: 
;     TOC Entries: -1835365408
;     Compression: -1
;     Dump Version: 1.11-0
;     Format: CUSTOM
;     Integer: 4 bytes
;     Offset: 8 bytes
;
;
; Selected TOC Entries:
;

显然存在时间戳问题,显然TOC条目和压缩已关闭。

不知道从哪里开始。文件大小表明它应该是一个完整的备份。我在同一时间段内有多个备份,当我尝试恢复它们时它们都报告类似。

有没有办法解压缩文件的数据部分。我可以使用hexedit并查看模式,但数据采用postgres的二进制压缩(-Fc)格式。我只需要找到并验证一些条目,所以如果有一种手动方式来检查和搜索,那就行了。

任何帮助表示赞赏。

postgresql pg-restore
2个回答
0
投票

是的,您可以使用-f参数提取它:

pg_restore -f /path/to/target/file /path/from/source/dump

更多信息here


0
投票

我无法在您粘贴的输出中看到时间戳问题,或者我遗漏了一些东西。

虽然,通常,如果您只想恢复少量记录,您可能想尝试-Lpg_restore,以便重新排序并恢复。

例如,

pg_restore -l dbdump > dblist

编辑dblist文件(通过注释或仅保留您要恢复的项目)

pg_restore -L dblist dbdump

pg_restore -d newdb dbdump

© www.soinside.com 2019 - 2024. All rights reserved.