psql的简单使用

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'));
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值