客户端程序
封装 SQL 命令的客户端程序
- clusterdb : CLUSTER 命令的封装,通过索引对基于堆表的物理文件进行重新排序,类似 Oracle 聚簇表
- reindexdb : REINDEX 命令的封装,对指定的库或表进行索引重建
- vacuumdb : VACUUM [FREEZE|FULL|ANALYZE] 命令的封装,对数据的物理文件进行垃圾回收
- vacuumlo : 清理数据库中未引用的大对象
- createdb : CREATE DATABASE 命令的封装,同类还有 createuser
- dropdb : DROP DATABASE 命令的封装,同类还有 dropuser
备份恢复
- pg_basebackup : 获取正在运行中的 PostgreSQL 实例的基础备份
- pg_dump/pg_dumpall : 以数据库转储的方式进行备份
- pg_restore : 从 pg_dump 中进行数据恢复
其他程序
- ecpg : C 程序 PostgreSQL 嵌入式 SQL 预处理器,将 SQL 调用替换为特殊函数调用,转为普通 C 代码
- oid2name : 解析数据目录中的 OID 和文件节点
- pgbench : 基础测试工具,可模拟简单的压力测试
- pg_config : 获取当前安装的 PG 的参数配置
- pg_isready : 检测数据库服务器是否可连接
- pg_receivexlog : 从运行中的实例获取事务日志流
- pg_recvlogical : 控制逻辑解码复制槽,及来自其中的流数据
- psql : 连接 PG 的客户端命令行工具
图形化工具
最流行的图形化工具: pgAdmin PostgreSQL: File Browser
命令行工具 psql
类似于 Oracle 的 sqlplus 工具。
psql <db_name> <user> # psql postgres pguser
psql -h hadoopServer1 -p 5432 -U pguser -W postgres
环境脚本
工具启动时,会读取操作系统用户目录下的 .psqlrc 脚本,并执行该脚本,可在其中设置环境,并定义一些常用命令
-- 编辑 ~/.psqlrc 添加常用命令
\set connections 'select datname, usename, client_addr, count(*) from pg_stat_activity where pid <> pg_backend_pid() group by 1,2,3 order by 1,2,4 desc;'
\set PROMPT1 '%/@%M:%> %R%# '
-- 登录 psql 使用命令
psql mydb pguser
mydb=# :connections
命令提示符
通过 PROMPT1, PROMPT2, PROMPT3 设置不同情况下的命令提示符:
* PROMPT1 : psql 等待输入命令时的提示符
* PROMPT2 : 一行脚本没有完成,等待继续输入时的提示符
* PROMPT3 : COPY FROM STDIN 时需要在终端输入时的提示符
提示符变量如下:
* %M : 数据库服务器别名,通过 -h 参数指定的值,默认是 local
* %> : 服务器的端口号
* %n : 数据库会话的用户名
* %/ : 数据库名
* %# : 超级用户显示 # 其他用户显示 >
* %p : 当前连接的后台进程号
* %R : 连接状态显示 = 断开显示 !
psql 元命令
psql 中使用 ? 可查看所有支持的元命令,使用 -E 选项登录 psql 的时候,会在执行元命令的时候显示对应的 SQL 语句。
* \l : 查看数据库列表
* \db : 查看表空间列表
* \d : 查看表中列的定义 \d <table_name>
* \dt[+] : 查看表相关属性 \dt+ <table_name>
* \di[+] : 查看索引相关属性 \di+ <index_name>
* \sf : 查看函数定义 \sf floor(numeric)
* \x : 切换输出格式,行输出与列输出模式切换
* \h : 查看命令的帮助 \h create table
* \set : 设置变量 \set name value
, 等同于命令行选项 -v name=value
* \timing : 以毫秒为单位,显示 SQL 执行的时间
* \watch : 以指定间隔,反复执行上一条 SQL 命令 \watch 3