PostgreSQL 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相当于执行

\l
连接到指定数据库

\c 库名
psql的常用命令
“\h” 命令
查询SQL语句的语法
\h
使用"\h" 命令可以查看各种SQL语句的语法,还是比较方便的。

“\d” 命令
查看表

\d [ pattern ]
\d [ pattern ]+
显示每个匹配"pattern"(表、视图、索引、序列)的信息,包括对象中所有的列,各列的数据类型、表空间和所有的特殊属性等。

# 列出所有表
\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_database_size('DB_NAME'));

select pg_size_pretty(pg_table_size('TABLE_NAME'));

select pg_size_pretty(pg_indexes_size('INDEX_NAME'));
psql命令使用
命令	说明
\h	help \h create table
\d tb_name	查看表(视图,索引,序列)结构
\du	查看用户列表
\dt	查询数据库所有表(非系统表)
\dS	列出系统表和索引
\di index_name	只查看指定索引
\df	列出函数
\dv	只显示视图
\ds	只显示序列
\dn	列出所有的schema
\db	显示所有的表空间
\dg	列出数据库的所有角色或用户
\dp或者\z	查看表的分配权限
\c [user_name] [db_name]	切换某用户到指定数据库
\timing on/off	显示执行sql的时间
\encoding encode_type	设置客户端编码
\pset [option [value] ]	输出格式设置
\l	显示所有数据库列表
\q	退出
\o filename	文本输出执行结果
\I filename	用于执行存储在外部文件的sql语句或命令
\x	数据按列展示,类似mysql的\G
自动补全:连续单击两次tab键

+:对比显示更加详细的信息,例如:\du+  \dt+ \d+
?/* :查询匹配通配符,例如:\d tb?
pgsql -E :可以显示命令执行的对应的SQL语句

\pset边框设置
\pset boder 0 :不带任何边框
\pset boder 1 :输出内容有边框
\pset boder 2 :带边框

\pset设置文本输出格式
\pset format unaligned (默认分隔符|)
\pset filesep '分隔符' (例如:\t)

PS:本文转自互联网

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值