在Ubuntu上进行PostgreSQL数据迁移,常用方法包括使用命令行工具和图形化工具,以下是具体步骤及注意事项:
pg_dump
和 pg_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
。psql
导入SQL脚本导出为SQL文件
pg_dump -U 用户名 -h 主机地址 -p 端口 -F p -b -v -f /路径/备份文件.sql 数据库名
-F p
:生成纯文本SQL脚本。导入SQL文件
psql -U 用户名 -h 主机地址 -d 目标数据库名 -f /路径/备份文件.sql
COPY
命令(适合单表或结构化数据)COPY 表名 TO '/路径/文件.csv' WITH CSV HEADER;
COPY 表名 FROM '/路径/文件.csv' WITH CSV HEADER;
pg_restore -j
并行恢复或分阶段处理。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。