一、环境准备
-
确认 PostgreSQL 安装目录
通常位于:C:\Program Files\PostgreSQL\<版本号>\bin
-
(可选)将
bin
添加到系统 PATH- 右键“此电脑”→“属性”→“高级系统设置”→“环境变量”
- 在“系统变量”中编辑
Path
,新增:C:\Program Files\PostgreSQL\<版本号>\bin
这样即可在任意命令行窗口直接使用
pg_dump
、psql
等工具。 -
确认客户端编码
如果数据库使用 UTF‑8,确保命令行窗口和文件保存也是 UTF‑8,以免出现中文乱码。
二、整库导出
2.1 导出为纯 SQL 脚本
将整库导出成一份可读的 SQL 文本,适合审阅或手动微调:
pg_dump -U postgres -h localhost -p 5432 \
-F p \
-f "C:\backup\mydb.sql" \
mydb
-F p
:plain 文本格式-f
:指定输出文件路径mydb
:数据库名
2.2 导出为自定义二进制格式
自定义格式支持并行恢复、高效压缩,推荐生产环境备份:
pg_dump -U postgres -h localhost -p 5432 \
-F c -b -v \
-f "C:\backup\mydb.backup" \
mydb
-F c
:custom 格式(.backup)-b
:包含大对象(BLOBs)-v
:显示详细执行过程
恢复命令:
pg_restore -U postgres -h localhost -p 5432 \
-d targetdb -v \
"C:\backup\mydb.backup"
三、单表或部分数据导出
有时只需导出特定表或筛选后的数据,避免冗余导出、加快速度。
3.1 导出单表模式(DDL)
只导出表结构,不包含数据:
pg_dump -U postgres -h localhost -p 5432 \
-F p -s -t schema.table_name \
-f "C:\backup\table_schema.sql" \
mydb
-s
/--schema-only
:仅导出模式
3.2 导出单表数据(DML)
只导出表中数据,不含建表语句:
pg_dump -U postgres -h localhost -p 5432 \
-F p -a -t schema.table_name \
-f "C:\backup\table_data.sql" \
mydb
-a
/--data-only
:仅导出数据
3.3 导出表结构+数据
同时导出模式与数据,适合局部迁移:
pg_dump -U postgres -h localhost -p 5432 \
-F p -t schema.table_name \
-f "C:\backup\table_full.sql" \
mydb
四、导出为 CSV
对于数据分析、报表、ETL 场景,CSV 格式是最常用的轻量化选择。
4.1 使用 psql \copy
\copy
在客户端执行,避免服务器文件权限问题:
psql -U postgres -h localhost -p 5432 -d mydb \
-c "\copy schema.table_name TO 'C:\\backup\\table.csv' WITH CSV HEADER"
WITH CSV HEADER
:第一行包含列名- 本地路径需双反斜杠
\\
4.2 导出查询结果
仅导出符合条件的数据集:
psql -U postgres -h localhost -p 5432 -d mydb \
-c "\copy (SELECT id,name,created_at FROM schema.table_name WHERE status='active') \
TO 'C:\\backup\\active_users.csv' WITH CSV HEADER"
五、使用 pgAdmin 图形化导出
对于不熟悉命令行的同学,pgAdmin 提供了直观的导出向导:
- 在 pgAdmin 中,右键点击目标数据库或表 → Backup…
- 选择导出格式(Plain/Custom/Tar/Directory)
- 设置文件名和路径,切换 “Dump Options” 勾选数据或模式
- 点击 Backup 开始导出
这种方式适合快速上手,但不支持脚本化自动化。
六、常见注意事项
- 权限控制
导出者必须对表/数据库拥有足够的SELECT
权限及备份权限(如超级用户)。 - 磁盘空间
预留足够空间,特别是自定义格式和大表导出时。 - 网络连通性
远程导出时,确保防火墙放行 PostgreSQL 端口(默认 5432)。 - 性能影响
高峰期导出可能与线上业务争抢 I/O,可考虑利用--jobs
参数并行导出(针对 Custom 格式)。 - 脚本自动化
将导出命令写入 PowerShell 或.bat
,并借助 Windows 任务计划定时执行,实现定时全量/增量备份。
七、结语
本文集成了在 Windows 平台上,使用命令行(pg_dump、psql)与 pgAdmin 图形化工具导出 PostgreSQL 数据的多种实战方案。根据不同需求,你可以灵活选择整库导出、自定义表级导出,或轻量级 CSV 导出,并结合脚本化和定时任务,实现稳定、高效的数据库备份与迁移。
推荐阅读
- PostgreSQL 官方文档:pg_dump 与 pg_restore
- [深入剖析 PostgreSQL 并行备份与恢复实战]
- [Windows 下 PowerShell 与 PostgreSQL 自动化脚本最佳实践]