在 Ubuntu 上使用 pgAdmin 进行数据库迁移
一 准备与规划
- 明确迁移范围:是迁移整个数据库(结构+数据+权限),还是仅迁移部分表/数据。
- 版本与兼容:尽量保持源/目标 PostgreSQL 版本接近(如 12→15 通常问题不大),避免跨大版本导致函数、类型或语法不兼容。
- 权限与账号:用于连接的用户需具备导出(如 SELECT)与导入(如 INSERT/CREATE)权限;若涉及结构变更,还需 ALTER/DROP。
- 目标库就绪:在目标环境预先创建同名或兼容的目标数据库,字符集与排序规则建议保持一致。
- 工具与路径:pgAdmin 4 提供图形化的备份/恢复与导入/导出;导出文件建议放在有读写权限的路径,避免路径包含空格导致失败。
二 方法一 备份与恢复 适合整库迁移
- 步骤
- 在 pgAdmin 左侧连接源服务器,右键源数据库 → 备份 Backup…。
- 在备份对话框中:
- 选择格式:纯文本 SQL(便于跨平台/审阅)或自定义/压缩格式(便于高效传输与选择性恢复)。
- 勾选需要包含的节点:建议勾选 Pre-data / Data / Post-data(对应结构、数据、索引/约束等),并选择适当的 Owner/Role 与 Encoding。
- 指定输出路径(如:/home/user/mydb.backup),开始备份。
- 在目标服务器创建目标数据库(如 mydb_target)。
- 在目标数据库上右键 → 恢复 Restore…,选择刚才的备份文件,确认目标数据库与必要选项后开始恢复。
- 提示
- 自定义/压缩格式文件通常使用 pg_restore 恢复,支持按表/模式选择性恢复。
- 若遇到“已存在对象”冲突,可在恢复前清理目标库或在恢复选项中调整“是否创建/替换对象”。
三 方法二 导入导出 适合表/数据级迁移
- 导出
- 整库或按对象:右键数据库 → 任务/工具 → 导出 Export…,格式可选 SQL(结构与数据)或 CSV(仅数据);CSV 需设置字段分隔符(如 ,)与文本限定符(如 ")。
- 单表数据:右键表 → 导出数据 Export Data…,选择 CSV/SQL 并配置分隔符、空值表示等。
- 导入
- 整库 SQL:在目标库执行 SQL 脚本(右键数据库 → 查询工具 打开 .sql 并执行,或使用 psql)。
- 单表 CSV:右键目标表 → 导入/导出数据 Import/Export Data…,选择文件,设置与导出一致的分隔符/文本限定符,并选择“追加”或“截断后导入”。
- 适用场景
- 将少量表或查询结果迁移到已有库;
- 将数据导入到第三方工具或不同结构的目标库(CSV 更灵活)。
四 校验与常见问题
- 完整性校验
- 对比对象:在目标库检查表、视图、索引、约束、函数是否与源库一致。
- 对比数据量:对关键表执行
- SELECT COUNT(*) FROM table;
核对源/目标记录数是否一致。
- 业务验证:执行业务查询/写入,确认应用功能正常。
- 常见问题与处理
- 权限不足:为连接用户授予 CREATE/INSERT 等必要权限(必要时使用 postgres 管理员)。
- 版本不兼容:升级目标库或在导出时调整不兼容对象/语法(如函数、类型)。
- 大文件导入慢:可分表/分批导入,或在目标库适度调大 work_mem / maintenance_work_mem 后再导入。
- 路径含空格:备份/恢复时确保文件路径不含空格,否则易失败。
- 仅迁移数据且表已存在:导出为 –inserts 或 –column-inserts 的 SQL,能更稳健地插入到已有表结构中(字段顺序或新增列时更安全)。
五 补充 若你要迁移的是 pgAdmin 自身的配置与服务器清单
- 迁移对象:pgAdmin 4 的配置与服务器列表(不是业务数据库)。
- 步骤:备份并复制目录 /etc/pgadmin 与 /var/lib/pgadmin 到新机器相同路径,按需调整 pgadmin.conf 中的连接信息;确保新环境已安装同版本 pgAdmin 后再启动。