在一个MES项目上用到了PostgreSQL数据库,由于以前没有操作过,
于是咨询了一下豆包该如何备份还原,以下是豆包老师给讲解的。
提问:
讲解下使用Navicat备份PG数据库,还原数据库的操作步骤
回答:
Navicat 对 PostgreSQL 提供Navicat 专属备份 (.nb3 格式)和SQL 文件导出 / 导入(通用格式)两种核心方式,以下是详细步骤。
一、前提准备
①打开 Navicat,成功连接到目标 PostgreSQL 服务器与数据库。
②确认当前用户有备份 / 还原权限(需超级用户或对应数据库所有权限)。
③准备好备份文件存储路径(建议非系统盘,空间充足)。
二、方式一:Navicat 专属备份(.nb3 格式)
适合在 Navicat 环境内快速备份还原,保留完整对象信息。
1. 备份步骤
| 步骤 | 操作 |
|---|---|
| 1 | 右键目标数据库 → 选择备份 → 新建备份 |
| 2 | (可选)在常规页签填写备份备注(如 "20260313 全量备份") |
| 3 | 在对象页签选择备份范围: ✅ 备份整个库:勾选数据库 ✅ 备份部分对象:勾选指定表 / 视图 / 函数等 |
| 4 | 点击开始备份,等待进度完成;备份文件自动生成.nb3 格式 |
| 5 | (可选)右键备份文件 → 打开文件所在位置,复制备份文件到安全路径 |
2. 还原步骤
| 步骤 | 操作 |
|---|---|
| 1 | (重要)先在目标服务器创建同名空数据库(还原建议同名,避免路径 / 权限问题)Navicat |
| 2 | 打开目标数据库的备份 面板,右键空白处 → 还原备份 |
| 3 | 选择.nb3 备份文件,点击打开 |
| 4 | 确认还原选项,点击开始还原,等待完成 |
| 5 | 刷新数据库,验证表、数据、函数等对象是否完整恢复 |
三、方式二:SQL 文件导出 / 导入(通用格式)
跨环境迁移、兼容其他 PostgreSQL 工具的首选方式。
1. 导出(备份)步骤
| 步骤 | 操作 |
|---|---|
| 1 | 右键目标数据库 → 选择转储 SQL 文件 → 结构和数据(按需选择仅结构 / 仅数据) |
| 2 | 配置导出选项: ✅ 保存路径:选择非系统盘,文件名建议含日期(如db_20260313.sql) ✅ 编码:推荐 UTF-8(避免中文乱码) ✅ 勾选:包含创建数据库语句、存储过程 / 函数、触发器等(按需) |
| 3 | 点击开始,等待导出完成;生成.sql 格式文件 |

2. 导入(还原)步骤
| 步骤 | 操作 |
|---|---|
| 1 | (可选)创建目标数据库(若导出时未包含创建语句) |
| 2 | 右键目标数据库 → 选择运行 SQL 文件 |
| 3 | 选择.sql 备份文件,设置编码(与导出一致) |
| 4 | 点击开始,勾选 "显示执行结果",等待执行完成 |
| 5 | 刷新数据库,验证数据与对象是否完整导入 |
四、关键注意事项
1、权限要求 :备份 / 还原需 PostgreSQL 用户有超级用户 或数据库 OWNER 权限,否则可能失败。
2、中文乱码 :导出 / 导入时统一编码为UTF-8,避免中文显示异常。
3、大数据库备份:优先选择SQL 文件导出,并启用 "分文件导出",避免单个文件过大。
4、还原前备份:重要数据还原前,务必先备份当前数据库,防止覆盖丢失。
5、跨版本兼容:确保 Navicat 版本与 PostgreSQL 版本兼容(推荐 Navicat 16/17 适配 PostgreSQL 12-16)。
6、对象依赖:还原时注意表、视图、函数的依赖关系,按正确顺序还原(如先表后视图)。
五、常见问题解决
1、还原失败:检查目标数据库是否为空、权限是否足够、备份文件是否完整。
2、中文乱码:统一编码为 UTF-8,导出时勾选 "使用 UTF-8",导入时选择对应编码。
3、大文件导入超时:在 Navicat 中延长查询超时时间,或使用 PostgreSQL 命令行psql -f 文件名.sql导入。