pg_restore旧数据库备份

时间:2018-09-06 17:26:47

标签: postgresql pg-restore

在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)格式。我只需要查找并验证一些条目,因此,如果有手动的方式进行检查和搜索,那将起作用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

是的,您可以仅使用-f参数将其提取:

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

更多信息here

答案 1 :(得分:0)

我在您粘贴的输出中看不到时间戳记问题,或者我丢失了一些东西。

尽管通常来说,如果您只想还原几条记录,则可能需要尝试-L中的pg_restore,以便对它们重新排序并还原。

例如,

pg_restore -l dbdump > dblist

编辑dblist文件(通过将其注释掉或仅保留要还原的项目)

pg_restore -L dblist dbdump

pg_restore -d newdb dbdump