在 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条目和压缩已关闭。
不知道从这里开始。文件大小表明它应该是完整的备份。我有来自同一时间范围的多个备份,当我尝试还原它们时,它们都报告相似。
有没有办法解压缩文件的数据部分。我可以十六进制编辑并查看架构,但数据采用 postgres 的二进制压缩 (-Fc( 格式。我只需要查找并验证一些条目,所以如果有手动检查和搜索的方法,那将起作用。
任何帮助,不胜感激。
是的,您可以使用-f
参数提取它:
pg_restore -f /path/to/target/file /path/from/source/dump
更多信息在这里。
我在粘贴的输出中看不到时间戳问题,或者我错过了一些东西。
但是,通常,如果您只想还原少量记录,则可能需要尝试-L
pg_restore
以便对它们重新排序和还原。
例如
pg_restore -l dbdump > dblist
编辑dblist
文件(通过注释掉它们或只留下要还原的项目(
pg_restore -L dblist dbdump
pg_restore -d newdb dbdump