psql工具使用方法
可以直接看到数据库
psql -l
连接数据库
psql -h <host or ip> -p <port> [数据库名称] [用户名称]
这些也可以通过环境变量指定:示例如下
export PGDATABASE=xxx
export PGHOST=xxx.xxx.xxx.xxx
export PGPORT=xxxx
export PGUSER=xxx
设置环境变量后,执行psql相当于执行
psql -h <host or ip> -p <port> [数据库名称] [用户名称]
或者直接通过psql登录上数据库后使用\l
\l
连接到指定数据库
\c 库名
psql的常用命令
“\h” 命令
查询SQL语句的语法
\h
使用“\h” 命令可以查看各种SQL语句的语法,还是比较方便的。
“\d” 命令
查看表
\d [ pattern ]
\d [ pattern ]+
显示每个匹配“pattern”(表、视图、索引、序列)的信息,包括对象中所有的列,各列的数据类型、表空间和所有的特殊属性等。
如果 \d 后面什么都不带,则列出当前数据库下所有的表
# 列出所有表
\d
# 查看表结构
\d t
# 查看索引信息
\d t_pkey
# 也可以使用通配符,如'*' '?'等
\d x?
# 使用\d + 可以更详细,比如:所有与表的列关联的注释,以及表中出现的OID
\d+ t
# 只显示匹配的表
\dt
# 只显示索引
\di
# 只显示序列
\ds
# 只显示视图
\dv
# 显示函数
\df
# 列出所有的schema
\dn
# 显示所有的表空间
\db
列出数据库中所有的角色或用户
\du
或
\dg
显示表权限分配
\dp t
显示执行SQL语句的时间
\timing on
select count(*) from t
指定客户端字符集
\encoding gbk
\encoding utf8
格式化输出命令“\pset”
\pset [ option [ value ] ]
根据命令后面的“option”与“value”的不同可以设置很多种不同的输出格式。
带有边框
\pset border 2
select * from t
不带任何边框的内容
\pset border 0
select * from t
psql中默认输出是\pset border 1
\pset border 0:表示输出内容无边框
\pset border 1:表示输出内容只有内边框
\pset border 2:表示输出内容内外都有边框
分隔符
\pset format unaligned
select * from t
默认分隔符是“|”,可以使用“\pset filedsep” 来设置分隔符,如改成TAB分隔符:
\pset filedsep '\t'
select * from t
还可以将结果输出到一个文件中,使用“\o” :
\pset format unaligned
\t # 去掉表头信息
\o test.txt
select * from t
“\x” 命令
使用 “\x” 可以把按行展示的数据变成按列展示,与MySQL中命令后面加 “\G” 类似
\x
select * from t
执行存储在外部文件中的SQL命令
命令 “\i <文件名>” 用于执行存储在文件中的SQL语句或命令
\x
\i test.sql
也可以在psql命令行中加 “-f ” 来执行文件中的SQL
psql -x -f test.sql
其中命令行的 “-x” 等同psql交互式模式的 “\x”
编辑模式
编辑命令 “-e” 可以用于编辑文件,也可以编辑已存在的函数或视图定义,输入 “-e” 后会调用一个编辑器,与vim一样,如果不带任何参数则生成一个临时文件,前面执行的最后一条命令会出现在临时文件中,当编辑完成后退出编辑器并回到psql中时会立即执行该命令
\e
“\e” 后面也可以指定一个文件名,但要求这个文件必须存在,否则会报错。
也可以用 “\ef” 来编辑一个函数的定义,如果 “\ef” 后面不跟任何参数,则会出现一个编辑函数的模板,如果后面跟一个函数名,则函数定义的内容会出现在编辑器中,保存退出后,再输入 “;” 就会执行所创建函数的SQL语句
同样如果输入 “\ev” 则是对视图进行编辑。
需要注意,退出编辑器后,要输入 “\reset” 来清楚psql的命令缓冲区,防止误执行创建的函数与视图
\ef
\ev
\reset
输出信息的 “\echo” 命令
与shell一样,“\echo” 会输出一行信息
\echo hello world
通常可以写在sql脚本里面
cat test.sql
\echo ==========
select * from t
\echo ==========
列出当前数据库连接的信息
\conninfo
查看数据库中安装的扩展
\dx
或
select * from pg_extension;
获得快捷命令实际执行的SQL
连接数据库的时候使用-E参数即可
psql -E postgres
这样连接上数据库之后执行“\d”这些命令都会打印出实际的SQL语句
查看数据库、表、索引大小
select pg_size_pretty(pg_table_size('test'));
select pg_size_pretty(pg_database_size('david'));
select pg_size_pretty(pg_indexes_size('test'));