Ubuntu PostgreSQL 怎样进行数据迁移

在Ubuntu上进行PostgreSQL数据迁移,常用方法包括使用命令行工具和图形化工具,以下是具体步骤及注意事项:

一、命令行工具迁移

1. 使用 pg_dumppg_restore(推荐)

  • 导出数据

    pg_dump -U 用户名 -h 主机地址 -p 端口 -F c -b -v -f /路径/备份文件.dump 数据库名
    
    • -F c:自定义格式(支持压缩和并行恢复)。
    • -b:包含大对象(如二进制数据)。
    • 示例:pg_dump -U postgres -h localhost -p 5432 -F c -b -v -f /backup/db.dump mydb
  • 导入数据

    pg_restore -U 用户名 -h 主机地址 -d 目标数据库名 -v /路径/备份文件.dump
    
    • 若目标数据库不存在,可加 -C 参数自动创建。
    • 示例:pg_restore -U postgres -d newdb -v /backup/db.dump

2. 使用 psql 导入SQL脚本

  • 导出为SQL文件

    pg_dump -U 用户名 -h 主机地址 -p 端口 -F p -b -v -f /路径/备份文件.sql 数据库名
    
    • -F p:生成纯文本SQL脚本。
  • 导入SQL文件

    psql -U 用户名 -h 主机地址 -d 目标数据库名 -f /路径/备份文件.sql
    
    • 需提前创建目标数据库。

3. 使用 COPY 命令(适合单表或结构化数据)

  • 导出表数据到CSV
    COPY 表名 TO '/路径/文件.csv' WITH CSV HEADER;
    
  • 导入CSV数据到表
    COPY 表名 FROM '/路径/文件.csv' WITH CSV HEADER;
    
    • 需确保目标表结构已存在。

二、图形化工具迁移(pgAdmin)

  1. 导出数据库
    • 连接源数据库 → 右键选择“Backup…” → 选择格式(SQL/自定义)→ 指定路径 → 点击“Backup”。
  2. 导入数据库
    • 连接目标数据库 → 右键选择“Restore…” → 选择备份文件 → 配置选项(如覆盖、并行恢复)→ 点击“Restore”。

三、注意事项

  1. 权限与版本
    • 确保源和目标服务器的PostgreSQL版本兼容,且用户有足够权限(如创建数据库、访问表)。
  2. 数据一致性
    • 迁移前建议对源数据库进行备份,避免数据丢失。
    • 大数据量迁移时,使用 pg_restore -j 并行恢复或分阶段处理。
  3. 特殊场景
    • 跨服务器迁移需确保网络连通,可通过SSH隧道或直接文件传输(如scp)。
    • 若需迁移部分数据,可使用 pg_dump-t 参数指定表名。

四、参考命令速查表

场景 命令示例
备份整个数据库 pg_dump -U postgres -h localhost -F c -b -v -f /backup/db.dump mydb
恢复整个数据库 pg_restore -U postgres -d newdb -v /backup/db.dump
备份单表 pg_dump -U postgres -h localhost -t users -F c -b -v -f /backup/users.dump mydb
从SQL文件导入 psql -U postgres -d newdb -f /backup/schema.sql

更多细节可参考官方文档:PostgreSQL pg_dump/pg_restore。