文章

psql的使用

psql时postgreSQL的命令行工具,提供了很多sql语法的简写,使用起来更加的方便.


psql的使用模式

psql包括两种使用模式:

  • 交互模式

    # 输入psql进入交互环境
    [postgres@postgresql ~]$ psql 
    psql (12.1, server 12.7)
    Type "help" for help.
    
    postgres=# \l
                                      List of databases
       Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
    -----------+----------+----------+-------------+-------------+-----------------------
     postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
     template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
    (3 rows)
    
    postgres=# exit
  • 非交互模式

    # 在linux的命令行种直接执行命令
    [postgres@postgresql ~]$ psql -l
                                      List of databases
       Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
    -----------+----------+----------+-------------+-------------+-----------------------
     postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
     template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
    (3 rows)
    
    [postgres@postgresql ~]$ 

常用的命令

类别

命令

说明

示例

运行外部sql

psql -f 文件名

帮助

psql -h

类别

命令

说明

示例

帮助

h [sql 命令]

显示sql命令的帮助信息

h create user

显示信息

d [参数]

显示和参数相关的所有信息(包括:表,视图,索引,序列,约束,触发器等)
默认显示所有的表
如果参数为表名,则显示表的结构

d [表名]

d+ [参数]

可以显示比d 更多的信息,比如:字段的注释

dt [参数]

显示相关的表

di [参数]

显示相关的索引

ds [参数]

显示相关的序列

dv [参数]

显示相关的视图

df [参数]

显示相关的函数

dn

列出所有的schema

db

列出所有的表空间

du 或 dg

列出所有的用户和角色,两个命令等价,pg种不区分用户和角色

dp 或 z

显示表的权限的分配情况

显示执行时间

timing on

显示sql的执行时间

字符集

encoding [字符集]

指定客户端的字符集,解决与服务端字符集不一直的情况

encoding utf8

格式化输出

pset

pset border [参数]

0-无边框,1-内边框,2-全部边框

peset border 2

pset format unaligned

修改数据的间隔方式,默认使用 \

作为间隔

pset fieldsep [间隔符]

修改默认的间隔符

pset fieldsep "t"

o [文件名称]

将输出重定向到文件种

o a.txt

t

取消结果种的列头及行数

x

将输出换为按行显示,

运行外部文件

i 文件名

编辑命令

e

进入vim ,编辑上一个执行的命令或者语句,保存后会立即执行.

ef [函数名]

无参数代表创建函数
有参数代表查看函数的定义

ev [视图名]

无参数代表创建视图<br/>有参数代表查看视图的定义

帮助

?

....

psql的使用技巧

  1. 历史命令:使用上下键来查看历史命令

  2. 命令补全: 使用tab键

  3. 取消自动提交的功能:

    • 方法1:语句前写 begin;提交或者回滚时,使用 "commit;"或者"rollback"

    • 方法2: 关闭自动提交功能.\set AUTOCOMMIT off

  4. 显示psql的命令对应的语句

    • 方法1: 启动时加-E参数.

    • 方法2: 使用语句 \set ECHO_HIDDEN on | off

License:  CC BY 4.0