PostgreSQL 命令行工具介绍

2023-09-18 11:59:31

前言

psql 是 PostgreSQL 自带的命令行交互客户端工具,类似于 MySQL 的 mysql -u -p 不过相当于 MySQL 的命令行工具 psql 功能更丰富些,例如单击 tab 自动补全。本篇文章介绍 psql 的使用及常用命令

1. 连接数据库

1.1 psql 本地连接

已经安装好 PostgreSQL 直接输入 psql 即可连接到数据库:

[postgres@db4 data]$ psql
psql (12.2)
Type "help" for help.

postgres=# 

为什么不用输入用户名和密码呢?安装 PostgreSQL 时,会创建一个数据库初始化时与操作系统用户同名的 super 账号,在本地 OS 用户下登陆数据库时,因为执行的是操作系统认证,所以不需要用户和密码,这块也可以在 pg_hba.cnf 中配置。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
1.2 psql 远程连接

使用 psql 连接远程的 PostgreSQL:

[postgres@db4 data]$ psql -h 172.16.104.56 -p 5432 -U abc -W 
Password: 
psql (12.2)
Type "help" for help.

abc=> 

涉及的连接参数:

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "postgres")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)
1.3 指定客户端字符集

当客户端字符集与服务器字符集不一致时,就会出现乱码,可使用下方命令切换客户端字符集:

\encoding gbk

2. pg_ctl 管理命令

除了 psql 还有一个 pg_ctl 管理命令也是 DBA 经常要使用的命令,在此也介绍一下用于 初始化、重启、加载配置文件等。

2.1 初始化数据库

只在安装阶段使用的命令,初始化数据库。

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]
2.2 启动数据库

启动(start)、关闭(stop)、重启(restart) 数据库,如果没有指定参数,将从环境变量 /etc/profile 中读取:

pg_ctl [动作] [-D datadir] [-l filename]
2.3 加载配置文件

修改配置文件后,重新加载配置文件:

pg_ctl reload [-D datadir] [-s]
2.4 查看数据库状态
pg_ctl status [-D datadir]

3. 数据库信息查看

3.1 查看数据库版本
select version();
                                                 version                                                 
---------------------------------------------------------------------------------------------------------
 PostgreSQL 12.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
3.2 查看数据库的启动时间
select pg_postmaster_start_time();
   pg_postmaster_start_time    
-------------------------------
 2023-09-14 14:41:24.890359+08

通过数据库的启动时间,可以判断数据库是否发生过重启中断。

3.3 查看配置文件 load 时间
select pg_conf_load_time();
       pg_conf_load_time       
-------------------------------
 2023-09-14 14:41:24.849112+08

使用 pg_ctl reload 或重启数据库会触发配置文件重新加载,改时间会更新。

3.4 查看当前连接用户
select user;
3.5 查看修改参数

查看参数:

-- 下面两个命令都可以
show [参数名];

select current_setting('参数名');

修改参数:

set [参数名] to '改后值';
3.6 查看数据库大小
 select pg_size_pretty(pg_database_size('mydb'));
3.7 查看表大小
-- 仅查看表大小,不包含索引大小
select pg_size_pretty(pg_relation_size('pgbench_accounts'));
-- 包含索引大小
select pg_size_pretty(pg_total_relation_size('pgbench_accounts'));

4. 常见用法

4.1 执行外部文件

与 MySQL 中的 source 命令作用一样:

\i 文件名.sql

还有一种方法 psql -x -f 文件名.sql

psql -d postgres -x -f 文件名.sql
4.2 编辑模式

进入编辑模式,与 MySQL edit 命令一样,SQL 特别长的场景下可以使用编辑模式:

\e
4.3 列显示模式

与 MySQL \G 一样,不过 psql 执行前需要先打开:

postgres=# \x
Expanded display is on.

postgres=# \d

List of relations
-[ RECORD 1 ]------------
Schema | public
Name   | pgbench_accounts
Type   | table
Owner  | postgres
-[ RECORD 2 ]------------
Schema | public
Name   | pgbench_branches
Type   | table
Owner  | postgres
-[ RECORD 3 ]------------
Schema | public
Name   | pgbench_tellers
Type   | table
Owner  | postgres
-[ RECORD 4 ]------------
Schema | public
Name   | v_locks_monitor
Type   | view
Owner  | postgres
更多推荐

9.21数电(加法器&状态机&独热编码)

加法半加器一位,分为两部分,一个是进位,一个是单位上的和进位采取与门,单位上的和用异或门全加器进位数就是三个数进行加和,通过与门,就是两两过与门描述每位的和项就是,只去描述那个1的情况,即三中有一个,或者三个都为1分解全加器行波进位加法器快速加法器是说下一位的进位=此位的两个加数再加上来自上位的进数当此位的两个加数均为

如何恢复U盘里面的已经损坏的数据?

弹出使用驱动器之前,先将U盘格式化的信息框,是Windows系统针对某些特定类型的U盘或移动硬盘的一种常见处理方式。一般来说,如果U盘或移动硬盘出现某些故障或问题,Windows系统会建议用户将其格式化。格式化是一种常规的操作,它能使U盘或移动硬盘恢复到初始状态,但需要注意的是,格式化操作将会清除所有存储在U盘或移动硬

极客时间:数据结构与算法之美【文章笔记 & 实践 & 总结】

原文链接:https://time.geekbang.org/column/intro/10001730127|递归树:如何借助树来求解递归算法的时间复杂度?如何借助树来分析归并排序算法的时间复杂度?如何借助树来分析快速排序算法的时间复杂度?如何借助递归树来分析斐波那契数列的时间复杂度?如何借助递归树来分析全排列的时间

SpringBoot,Mybatis 使用Java8(JSR310)时间日期规范

目录一.依赖二.前台三.Controller,Form,Service四.数据库类型五.效果一.依赖⏹若使用的是SpringBoot<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter<

综合管廊安全监测系统,城市‘里子’的守护者

在现代城市的地下,一条隐藏在地下深处的巨龙悄然运行,它虽悄无声息,却是城市运转的重要生命线。这个神秘的存在就是综合管廊,综合管廊是保障城市运行的重要基础设施,被形象地称为“城市大动脉”“地下生命线”,能够有效解决传统城市建设中存在的“空中蜘蛛网”“马路拉链”等“城市病”,不仅让市容市貌更美观、更安全,也可以减少路面翻修

python温度转换程序

1.使用pycharm运行温度转换程序,尝试将温度单位设在前面2.参照温度转换程序,自己写一个关于货币转换、长度转换、重量转换或者面积转换的程序循环+函数defconvertemperature():temperature=""while(temperature!="q"):temperature=input("请输入

如何在linux定时备份opengauss数据库(linux核心至少在GLIBC_2.34及以上)

前提环境,linux的核心至少在GLIBC_2.34及以上才能使用。查看linux的glibc版本的命令如下strings/lib64/libc.so.6|grepGLIBC如下图或者用ldd--version如下图在官网下载对应的依赖包,只需要这个lib文件即可,将这个包放在linux对应下面脚本的LD_LIBRAR

Guava Cache介绍-面试用

一、GuavaCache简介1、简介GuavaCache是本地缓存,数据读写都在一个进程内,相对于分布式缓存redis,不需要网络传输的过程,访问速度很快,同时也受到JVM内存的制约,无法在数据量较多的场景下使用。基于以上特点,本地缓存的主要应用场景为以下几种:对于访问速度有较大要求存储的数据不经常变化数据量不大,占用

【校招VIP】java语言考点之反射

考点介绍:java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为lava语言的反射机制。反射被视为动态语言的关键。java语言考点之反射

【云服务器开放端口详细教程~来了】

你不知道我真的会哭云服务器开放端口详细教程来了前言一、常见云服务器端口的认识●云服务器端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。●当一台计算机启动了一个可访问的程序,那么它就要至少开启一个端口号来让外界的计算机完成访问。我们可以把没

Linux:haproxy部署--搭建nginx集群

Haproxy介绍Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,它支持双机热备、虚拟主机、基于TCP和HTTP应用代理等功能。其配置简单,而且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,Haproxy会自动的将该故障服务器摘除,当

热文推荐