PostgreSQL命令行工具psql常用命令
作者:mmseoamin日期:2023-12-27

1. 概述

通常情况下操作数据库使用图形化客户端工具,在实际工作中,生产环境是不允许直接连接数据库主机,只能在跳板机上登录到Linux服务器才能连接数据库服务器,此时就需要使用到命令行工具。psql是PostgreSQL中的一个命令行交互式客户端工具,类似于Oracle数据库中的命令行工具sqlplus,允许用户输入SQL语句或命令,并将其发送给PostgreSQL服务器,再显示SQL语句或命令的执行结果。

2. 进入命令行模式

操作用户是数据库用户时,可以使用直接psql命令,进入命令交互输入模式后会显示psql版本,然后出现命令提示符

PostgreSQL命令行工具psql常用命令,直接进入命令行,第1张

如果使用与操作系统用户名不相同的数据库用户名连接数据库时,需要指定对应的用户名和数据库名称,命令如下:

psql -h 127.0.0.1 -p 5432 -U 用户名 -d 数据库名

PostgreSQL命令行工具psql常用命令,其他用户进入命令行,第2张

  • -h后面的IP地址是数据库所在的IP地址
  • -p后面的端口时数据库的监听端口
  • -U后面的参数是创建的用户名
  • -d后面的参数是创建的数据库名

    退出psql命令行模式,使用\q命令

    PostgreSQL命令行工具psql常用命令,退出psql,第3张

    3. psql常用命令

    3.1. \h命令

    用于查询SQL语句的语法,例如需要查看如何使用SQL语句创建用户,可以使用命令:

    \h create user
    

    PostgreSQL命令行工具psql常用命令,提示命令,第4张

    3.2. ?命令

    用于查询所有命令符,例如要查看psql中有哪些提示符,可以使用命令:

    \?
    

    PostgreSQL命令行工具psql常用命令,帮助提示符,第5张

    3.3. \d命令

    用于查询表、视图、索引、序列的信息,包括对象中所有的列、各列的数据类型、表空间和所有特殊属性

    \d命令后什么都不带,将列出当前数据库中所有的表和序列

    PostgreSQL命令行工具psql常用命令,\d命令,第6张

    \dt命令只显示所有表信息

    PostgreSQL命令行工具psql常用命令,\dt命令,第7张

    \d命令后跟表名,可以显示该表的结构

    PostgreSQL命令行工具psql常用命令,\d table,第8张

    \d命令后面跟索引名,也可以用于显示索引信息

    PostgreSQL命令行工具psql常用命令,\d 索引,第9张

    \d命令后面的表名或索引名可以使用通配符,如“”或“?”,使用\d x?命令可以匹配数据库名以x开头的数据库

    PostgreSQL命令行工具psql常用命令,\d ?命令,第10张

    使用\d t命令可以匹配包含数据库名为t的数据库

    PostgreSQL命令行工具psql常用命令,\d *命令,第11张

    \d+命令可以显示更详细的信息

    PostgreSQL命令行工具psql常用命令,\d+命令,第12张

    \di命令只显示索引

    PostgreSQL命令行工具psql常用命令,\di命令,第13张

    \ds命令只显示序列

    PostgreSQL命令行工具psql常用命令,\ds命令,第14张

    \dv命令只显示视图

    PostgreSQL命令行工具psql常用命令,\dv命令,第15张

    \df命令只显示函数

    PostgreSQL命令行工具psql常用命令,\df命令,第16张

    \dn命令显示所有的schema

    PostgreSQL命令行工具psql常用命令,\dn命令,第17张

    \db命令显示所有表空间

    PostgreSQL命令行工具psql常用命令,\db命令,第18张

    \du或\dg命令显示数据库中所有角色或用户

    PostgreSQL命令行工具psql常用命令,\du命令,第19张

    \dg命令与\du命令等价

    PostgreSQL命令行工具psql常用命令,\dg命令,第20张

    \dp或\z命令显示表的权限分配

    PostgreSQL命令行工具psql常用命令,\dp命令和\z命令,第21张

    3.4. 字符集命令

    客户端的字符集与服务器字符集不一致时,会出现乱码,可以使用\encoding命令指定客户端的字符编码

    PostgreSQL命令行工具psql常用命令,\encoding命令,第22张

    3.5. 格式化输出命令

    psql中执行SQL语句后输出的内容默认只有内边框的表格

    PostgreSQL命令行工具psql常用命令,内边框,第23张

    如果需要输出的带有内外边框的表格内容,使用命令\pset border 2

    PostgreSQL命令行工具psql常用命令,内外边框,第24张

    如果需要输出的不带任何边框,使用命令\pset border 0

    PostgreSQL命令行工具psql常用命令,无边框,第25张

    如果需要使用逗号分隔或以Tab分隔,使用\pset format unaligned命令

    PostgreSQL命令行工具psql常用命令,分隔符,第26张

    默认分隔符是“|”,可以使用\pset fieldsep命令来设置分隔符,如更改为Tab分隔符

    PostgreSQL命令行工具psql常用命令,Tab分隔符,第27张

    未了方便分析数据,有时需要将查询结果写入文件,可以使用\o命令

    PostgreSQL命令行工具psql常用命令,写入文件,第28张

    使用cat命令或view命令可以查看刚才保存的文件

    PostgreSQL命令行工具psql常用命令,查看文件,第29张

    使用\t命令可以删除文本中的表头和末尾的行数

    PostgreSQL命令行工具psql常用命令,去除表头,第30张

    \x命令可以把按行展示的数据变为按列展示

    PostgreSQL命令行工具psql常用命令,\x命令,第31张

    3.6. 其他命令

    \i <文件名>用于执行存储在外部的文件中的SQL语句或命令

    \x
    \i xxx.sql
    

    也可以直接在psql命令行使用-f <文件名>来执行SQL脚本

    psql -x -f xxx.sql
    

    此处的-x命令的作用相当于在psql中交互模式下运行\x命令

    \l命令显示所有数据库信息

    PostgreSQL命令行工具psql常用命令,\l命令,第32张

    \c database命令切换数据库

    PostgreSQL命令行工具psql常用命令,\c命令,第33张