在 瀚高V9 中,psql 是官方提供的交互式命令行客户端工具,功能强大,不仅支持标准 SQL,还提供大量元命令(以反斜杠 \ 开头),用于数据库管理、对象查看、格式化输出等。以下是 瀚高V9 中最常用、最实用的 psql 命令分类整理,适合开发、DBA 和运维人员日常使用。
一、连接与会话管理
| 命令 |
说明 |
| psql -U username -d dbname -h host -p port |
连接数据库(命令行方式) |
| \conninfo |
显示当前连接信息(用户、数据库、主机、端等) |
| \c dbname [username] |
切换到另一个数据库(或用户)例:\c mydb admin |
| \q |
退出(等价于quit或者exit) |
二、查看数据库对象(\d系列)
所有\d命令都支持通配符(如\dt abc*)
| 命令 |
说明 |
| \l[+] |
列出所有数据库(+显示更多详情如大小、编码) |
| \dn[+] |
列出所有schema |
| \dt[+] [pattern] |
列出表(tables) |
| \dv[+] [pattern] |
列出视图(views) |
| \ds[+] [pattern] |
列出序列(sequences) |
| \df[+] [pattern] |
列出函数(functions) |
| \di[+] [pattern] |
列出索引(indexes) |
| \dS[+] [pattern] |
列出系统表 |
| \d table_name |
查看表结构(字段、类型、约束、索引等)最常用! |
| \d+ table_name |
查看表结构 + 注释、存储参数等 |
三、查询执行与调试
| 命令 |
说明 |
| \x |
切换扩展显示模式(行列转置,适合宽表查看)强烈推荐! |
| \timing |
开启/关闭SQL执行时间统计(显示耗时)调优必备 |
| \gdesc |
只显示查询结果的列名和类型,不执行查询,调试神器!例:SELECT 1 AS id, now() AS ts \gdesc; |
四、输入与输出控制
| 命令 |
说明 |
| \o filename |
将后续查询结果输出到文件(\o取消) |
| \pset null ‘NULL’ |
设置为NULL值显示为‘NULL’(默认空白) |
| \pset format aligned/tabular/csv |
设置输出格式(对其/表格/CSV) |
| \pset pager off |
关闭分页(避免长结果卡住) |
| \i script.sql |
SQL 脚本文件 |
| \e |
在编辑器中打开当前查询(需设置环境变量) |
五、事务与配置
| 命令 |
说明 |
begin; commit; rollback; |
标准sql事务控制 |
| \set AUTOCOMMIT off; |
关闭自动提交(进入手动事务模式) |
| SHOW shared_buffers; |
查看参数(SQL命令,非psql元命令) |
| SET work_mem = ‘64MB’; |
会话级参数设置 |
六、实用技巧 & 高频组合
快速查看表结构 + 注释
导出表为 CSV
\copy (SELECT * FROM users) TO '/tmp/users.csv' WITH CSV HEADER;
|
查看慢查询(结合 pg_stat_statements)
\timing SELECT query, total_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 5;
|
查看当前活跃会话
SELECT pid, usename, application_name, state, query FROM pg_stat_activity WHERE state <> 'idle';
|
七、环境变量与配置文件
~/.bash_profile:psql 启动时自动执行的配置文
常用环境变量:
export PATH=/home/highgo/hgdb-v9.0/bin:$PATH export PGHOME=/home/highgo/hgdb-v9.0 export PGDATA=$PGHOME/data export PGDATABASE=highgo export PGUSER=highgo export PGPORT=1521 export PGPASSWORD=yourpass # 不安全,建议用 ~/.pgpass
|
八、安全提示
避免在命令行中直接写密码(会留在历史记录)正确做法:使用~/.pgpass文件(权限600)
hostname:port:database:username:password
|
总结:高频命令速查表
| 场景 |
命令 |
| 连接数据库 |
psql -U user -d db |
| 查看表结构 |
\d table_name |
| 切换数据库 |
\c newdb |
| 显示执行时间 |
\timing |
| 行列转置显示 |
\x |
| 退出 |
\q |
| 执行脚本 |
\i script.sql |
| 导出CSV |
\copy (query) TO ‘file.csv’ CSV HEADER |
| 查看数据库列表 |
\l |
记住:所有/开启的命令都是psql元命令,不需要分号结尾;而sql语句需要分号(;)结束