Ubuntu 下使用 pgAdmin 导出与导入数据
一 图形化操作 Backup Restore 与 Import CSV
- 导出
- 在左侧树形导航中连接到服务器,右键目标数据库,选择Backup…。
- 在弹窗中设置:
- Format:常用为Custom(.dump,支持压缩)、Plain(.sql)、Directory(目录格式)。
- Filename:导出路径,例如:/home/user/db_backup.dump。
- 切换到Options可设置Compression(压缩级别);自定义格式本身使用 zlib 压缩,适合跨版本迁移与保留依赖。
- 导入
- 先创建空的目标库(含所需扩展,如 PostGIS),右键目标库选择Restore…,指定备份文件(如 .dump),选择格式并确认执行。
- 对于CSV/文本数据:展开目标 Schema → Tables,右键表选择Import/Export…,在向导中选择文件、设置Delimiter(分隔符)、Header(是否有列名)、Encoding(编码)、以及目标 Schema/Table,开始导入。
- 适用场景
- 整库/整表迁移与备份用 Backup/Restore;单表或查询结果的数据交换用 Import/Export CSV。
二 命令行方式 pg_dump pg_restore 与 psql
- 导出整库为自定义格式(推荐,便于迁移与压缩)
- 命令:
pg_dump -h 地址 -p 端口 -U 用户名 -F c -b -v -f /path/backup.dump 数据库名
- 说明:-F c 为自定义格式,保留权限与依赖;适合跨版本与跨平台。
- 导入自定义格式备份
- 命令:
pg_restore -U 用户名 -h 目标主机 -p 端口 -d 目标数据库 /path/backup.dump
- 说明:恢复前需先创建目标库;如需覆盖,可先清理或在恢复选项中处理。
- 导出为 SQL 脚本(便于审阅/版本控制)
- 命令:
pg_dump -h 地址 -p 端口 -U 用户名 -f /path/backup.sql 数据库名
- 导入:
psql -U 用户名 -d 目标数据库 -f /path/backup.sql
- 说明:适合小体量或需要纯 SQL 的场景。
- 导出/导入单表
- 导出表:
pg_dump -h 地址 -p 端口 -U 用户名 -t 表名 -f /path/table.sql 数据库名
- 导入表:先创建表结构,再用
psql 执行 SQL 或使用 COPY 导入数据。
三 CSV 导入导出的 SQL 方法
- 从 CSV 导入到表
- 示例:
COPY your_table FROM '/path/to/file.csv' WITH (FORMAT csv, HEADER true, DELIMITER ',', ENCODING 'UTF8');
- 说明:文件路径为服务器侧路径;客户端导入可用
\copy 读取本地文件。
- 从表/查询结果导出为 CSV
- 示例:
COPY (SELECT * FROM your_table) TO '/path/to/file.csv' WITH (FORMAT csv, HEADER true, DELIMITER ',', ENCODING 'UTF8');
- 说明:在 pgAdmin Query Tool 中执行后,可用工具栏的Export将结果集导出为 CSV/SQL 等。
四 常见问题与实用建议
- 权限与安全
- 执行导入/恢复的用户需具备相应权限(如 CREATE、INSERT);跨网络传输建议使用 SSL(sslmode=require)。
- 版本与兼容性
- 跨大版本升级(如 14 → 15)优先采用 pg_dump/pg_restore 迁移;检查并迁移扩展(如 PostGIS)。
- 压缩与体积
- Custom(.dump) 已内置 zlib 压缩;若需更高压缩率,可用 Directory 格式后配合 gzip 进一步压缩。
- 特殊字符与格式
- CSV 导出/导入务必统一 分隔符、引号、换行符、编码(UTF8),避免导入错位。
- 验证与回滚
- 迁移后做数据校验(行数、主键唯一、抽样对比),并保留备份以便快速回滚。