以下是 PostgreSQL 中 psql
命令的 全部参数、使用示例 及其与 pg_restore
的 核心区别 总结:
一、psql
命令参数详解
psql
是 PostgreSQL 的交互式命令行工具,支持丰富的参数以管理数据库和执行脚本。以下是其核心参数分类及说明:
1. 通用选项
参数 | 说明 | 示例 |
---|---|---|
-c , --command=COMMAND |
执行单条 SQL 命令后退出 | psql -c "SELECT version();" |
-d , --dbname=DBNAME |
指定连接的数据库 | psql -d mydb |
-f , --file=FILENAME |
执行指定 SQL 文件 | psql -f backup.sql |
-l , --list |
列出所有数据库 | psql -l |
-v , --set=NAME=VALUE |
设置变量供脚本使用 | psql -v table_name=mytable |
-V , --version |
显示版本信息 | psql -V |
-X , --no-psqlrc |
不加载启动配置文件 | psql -X |
-1 , --single-transaction |
在单事务中执行脚本 | psql -1 -f script.sql |
2. 输入输出控制
参数 | 说明 | 示例 |
---|---|---|
-a , --echo-all |
显示所有输入内容 | psql -a -f script.sql |
-e , --echo-queries |
打印执行的 SQL 语句 | psql -e -c "SELECT 1;" |
-o , --output=FILENAME |
将结果输出到文件 | psql -o result.txt -c "SELECT * FROM table;" |
-q , --quiet |
静默模式(仅输出结果) | psql -q |
-A , --no-align |
禁用对齐输出 | psql -A |
-H , --html |
以 HTML 格式输出 | psql -H -c "SELECT * FROM table;" |
3. 连接选项
参数 | 说明 | 示例 |
---|---|---|
-h , --host=HOSTNAME |
数据库服务器地址 | psql -h 192.168.1.100 |
-p , --port=PORT |
数据库端口 | psql -p 5433 |
-U , --username=USERNAME |
连接用户 | psql -U admin |
-W , --password |
强制提示输入密码 | psql -W |
4. 高级功能
参数 | 说明 | 示例 |
---|---|---|
-j , --jobs=NUM |
并行执行(需结合 -f ) |
psql -j 4 -f script.sql |
-L , --log-file=FILENAME |
记录会话日志 | psql -L session.log |
-x , --expanded |
扩展表格模式 | psql -x -c "SELECT * FROM table;" |
二、psql
使用示例
1. 基本操作
# 登录数据库
psql -U postgres -d mydb
# 执行 SQL 文件并输出到日志
psql -U postgres -f restore.sql -L restore.log
# 导出查询结果到 CSV
psql -U postgres -c "COPY table TO STDOUT CSV HEADER;" -o data.csv
2. 变量传递
# 设置变量并在脚本中使用
psql -v table_name=users -c "SELECT * FROM :table_name;"
3. 并行执行
# 并行执行 SQL 脚本(需分块处理)
psql -j 4 -f large_script.sql
三、psql
与 pg_restore
的核心区别
特性 | psql |
pg_restore |
说明 |
---|---|---|---|
适用格式 | 仅支持 SQL 格式 | 支持自定义(-Fc )、目录(-Fd )、tar 格式 |
pg_restore 无法处理纯 SQL 文件 |
恢复功能 | 完整执行 SQL 脚本 | 支持选择性恢复(表、模式)、并行恢复、跳过触发器 | pg_restore 可控制恢复粒度 |
性能 | 单线程执行 | 支持并行恢复(-j ) |
pg_restore 处理大数据更快 |
灵活性 | 直接执行 SQL 命令 | 可调整恢复顺序、排除对象 | pg_restore 提供更细粒度的恢复选项 |
典型场景 | 简单脚本执行、交互式查询 | 大规模数据恢复、复杂备份管理 | psql 适合日常管理,pg_restore 适合专业备份恢复 |
四、如何选择工具?
使用
psql
的场景:- 执行 SQL 脚本或交互式查询。
- 处理纯文本格式的备份(如
pg_dump -Fp
生成的文件)。 - 需要快速执行简单恢复任务。
使用
pg_restore
的场景:- 恢复自定义或目录格式的备份(如
pg_dump -Fc
)。 - 需要并行恢复、选择性恢复表或数据。
- 调整恢复顺序或禁用触发器。
- 恢复自定义或目录格式的备份(如
五、注意事项
- 版本兼容性:确保
pg_dump
和pg_restore
的版本与目标数据库一致。 - 权限管理:恢复时需确保用户有足够的权限创建对象。
- 性能优化:使用
pg_restore -j
加速大规模数据恢复。
通过合理选择工具和参数,可显著提升 PostgreSQL 数据库的管理效率。