怎样在Navicat for PostgreSQL中还原包含大对象的备份

梦辰同学_7839

梦辰同学_7839

2026-09-22

149人浏览

原创

navicat for postgresql 无法还原大对象(lob),因其仅执行标准 ddl/dml,跳过 lo_import() 等函数;仅支持自身启用“包含大对象”选项导出的 .nb3 文件,或改用 psql/pg_restore。

怎样在navicat for postgresql中还原包含大对象的备份

Navicat for PostgreSQL 无法直接还原含大对象(LOB)的 .nb3 备份,除非该备份在创建时已启用「包含大对象」选项;若用 pg_dump -F p 导出的 SQL 文件含 lo_import()lo_export() 调用,Navicat 会执行失败——它不解析或执行这类函数。

为什么还原大对象经常静默失败

Navicat 的「还原」功能本质是按顺序执行 SQL 语句,但它跳过所有非标准 DDL/DML,比如:lo_importlo_createlo_put 等 PostgreSQL 大对象函数。你看到“还原成功”,实际只是建了表、插了普通字段数据,oid 字段可能留空或存了无效值,而真正的大对象文件(如 PDF、图片)根本没写入 pg_largeobject 表。

  • 错误现象:还原后查 SELECT lo_unlink(oid) 报错 “large object xxx does not exist”;或者应用读取大对象时返回空或损坏内容
  • 根本原因:Navicat 不具备大对象二进制流的解析与写入能力,也不调用 libpq 的 LO API
  • 兼容前提:只有 Navicat 自身生成的 .nb3 备份,且勾选了「备份大对象」(位于备份设置 → 高级 → 勾选「Include large objects」),才能在还原时一并恢复

用 pg_dump 导出含大对象时必须加 -b-F p

如果必须用命令行导出再交给 Navicat 导入(例如跨版本或需审计 SQL),不能只靠 pg_dump -F p。缺 -b 参数会导致大对象被忽略,即使表里有 oid 字段,dump 文件里也不会生成 lo_import 调用。

navicatmysql
navicatmysql

Navicat For MySQL

下载
  • pg_dump -U user -h host -p 5432 -F p -b -f backup_with_lo.sql mydb —— ✅ 正确:含 -b 才导出大对象关联逻辑
  • pg_dump -F p -f backup.sql mydb —— ❌ 错误:即使表含 oid,大对象内容不会出现在 SQL 中
  • 注意:-b 仅对使用 oid 类型或 lo 模块显式管理的表生效;若用 bytea 存小文件,则无需 -b,Navicat 可正常导入

Navicat 还原前必须手动检查 SQL 文件是否含大对象操作

打开你准备用于「运行SQL文件」的 .sql,搜索关键词判断是否真含大对象逻辑:

  • lo_importlo_create:有则说明导出时用了 -b,但 Navicat 会跳过这些行 → 还原后大对象丢失
  • INSERT INTO pg_largeobject:极罕见,通常是手工拼的 dump,Navicat 同样不认
  • bytea 字段的 INSERT:这种可被 Navicat 正常执行,无需额外处理
  • 结论:只要 SQL 文件里出现任何 lo_* 函数,就别指望 Navicat 能还原大对象——得换方案

真正可行的替代路径只有两条

要么退回命令行用 psql,要么改用 pg_restore(针对 -F c-F d 格式)。Navicat 在这个环节就是个纯 SQL 执行器,没底层 LO 支持。

  • ✅ 推荐路径:用 psql -U user -d mydb -f backup_with_lo.sql —— 它能识别并执行 lo_import,前提是数据库已启用 lo 扩展(CREATE EXTENSION IF NOT EXISTS lo;
  • ✅ 备选路径:用 pg_dump -F c -b 导出,再用 pg_restore -U user -d mydb backup.custom 恢复 —— 快、原子、支持并行,但 Navicat 完全不参与
  • ⚠️ 注意:Navicat 的「数据传输」功能也不能迁移大对象,它只传字段值,不触碰 pg_largeobject

大对象不是“多几个字节”的问题,它是独立于表存储的二进制块,依赖服务端 LO API 绑定。Navicat 图形界面的设计从没考虑这一层,所以别在它的「还原」按钮上浪费时间验证可行性。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

navicat

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.10

193

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4009

19

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。更详细的postgresql常用命令,大家可以访问下面的文章。

2023.11.16

607

3

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有\l、\d、\d5、\di、\ds、\dv、\df、\dn、\db、\dg、\dp、\c、\pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

2023.11.20

1356

6

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

2026.02.12

420

19

PostgreSQL 性能优化与查询执行计划实战
PostgreSQL 性能优化与查询执行计划实战

本专题深入解析PostgreSQL性能优化核心,聚焦查询执行计划的实战应用。通过EXPLAIN命令精准定位瓶颈,结合索引策略、SQL改写与参数调优,系统提升查询效率。从执行计划解读到性能调优全流程,助你掌握数据库性能诊断与优化实战能力。

2026.05.08

130

10

PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践
PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践

本文详解如何利用Next.js(搭配Drizzle ORM)与Go后端构建高性能应用,充分发挥PG在JSONB非结构化存储与pgvector向量检索上的优势。从数据建模到Docker容器化部署,打造支持AI时代的“One Database”工程化解决方案。

2026.05.08

861

10

PostgreSQL高级特性、内核机制与现代数据架构
PostgreSQL高级特性、内核机制与现代数据架构

本专题从MVCC并发控制与WAL日志等内核机制出发,详解JSONB、PostGIS及pgvector等高级特性。探讨如何利用单一引擎支撑关系型、向量及图数据等现代数据架构需求,助您掌握构建高并发、智能化应用的核心技术。

2026.05.08

224

10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2225

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.1万人学习