PostgreSQL 命令行工具介绍

文章目录

    • 前言
      • [1. 连接数据库](#1. 连接数据库)
        • [1.1 psql 本地连接](#1.1 psql 本地连接)
        • [1.2 psql 远程连接](#1.2 psql 远程连接)
        • [1.3 指定客户端字符集](#1.3 指定客户端字符集)
      • [2. pg_ctl 管理命令](#2. pg_ctl 管理命令)
        • [2.1 初始化数据库](#2.1 初始化数据库)
        • [2.2 启动数据库](#2.2 启动数据库)
        • [2.3 加载配置文件](#2.3 加载配置文件)
        • [2.4 查看数据库状态](#2.4 查看数据库状态)
      • [3. 数据库信息查看](#3. 数据库信息查看)
        • [3.1 查看数据库版本](#3.1 查看数据库版本)
        • [3.2 查看数据库的启动时间](#3.2 查看数据库的启动时间)
        • [3.3 查看配置文件 load 时间](#3.3 查看配置文件 load 时间)
        • [3.4 查看当前连接用户](#3.4 查看当前连接用户)
        • [3.5 查看修改参数](#3.5 查看修改参数)
        • [3.6 查看数据库大小](#3.6 查看数据库大小)
        • [3.7 查看表大小](#3.7 查看表大小)
      • [4. 常见用法](#4. 常见用法)
        • [4.1 执行外部文件](#4.1 执行外部文件)
        • [4.2 编辑模式](#4.2 编辑模式)
        • [4.3 列显示模式](#4.3 列显示模式)

前言

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

1. 连接数据库

1.1 psql 本地连接

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

bash 复制代码
[postgres@db4 data]$ psql
psql (12.2)
Type "help" for help.

postgres=# 

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

bash 复制代码
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust

1.2 psql 远程连接

使用 psql 连接远程的 PostgreSQL:

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

abc=> 

涉及的连接参数:

bash 复制代码
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 指定客户端字符集

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

sql 复制代码
\encoding gbk

2. pg_ctl 管理命令

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

2.1 初始化数据库

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

sql 复制代码
pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

2.2 启动数据库

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

sql 复制代码
pg_ctl [动作] [-D datadir] [-l filename]

2.3 加载配置文件

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

sql 复制代码
pg_ctl reload [-D datadir] [-s]

2.4 查看数据库状态

bash 复制代码
pg_ctl status [-D datadir]

3. 数据库信息查看

3.1 查看数据库版本

sql 复制代码
select version();
bash 复制代码
                                                 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 查看数据库的启动时间

sql 复制代码
select pg_postmaster_start_time();
bash 复制代码
   pg_postmaster_start_time    
-------------------------------
 2023-09-14 14:41:24.890359+08

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

3.3 查看配置文件 load 时间

bash 复制代码
select pg_conf_load_time();
bash 复制代码
       pg_conf_load_time       
-------------------------------
 2023-09-14 14:41:24.849112+08

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

3.4 查看当前连接用户

bash 复制代码
select user;

3.5 查看修改参数

查看参数:

sql 复制代码
-- 下面两个命令都可以
show [参数名];

select current_setting('参数名');

修改参数:

sql 复制代码
set [参数名] to '改后值';

3.6 查看数据库大小

bash 复制代码
 select pg_size_pretty(pg_database_size('mydb'));

3.7 查看表大小

sql 复制代码
-- 仅查看表大小,不包含索引大小
select pg_size_pretty(pg_relation_size('pgbench_accounts'));
sql 复制代码
-- 包含索引大小
select pg_size_pretty(pg_total_relation_size('pgbench_accounts'));

4. 常见用法

4.1 执行外部文件

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

bash 复制代码
\i 文件名.sql

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

bash 复制代码
psql -d postgres -x -f 文件名.sql

4.2 编辑模式

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

bash 复制代码
\e

4.3 列显示模式

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

bash 复制代码
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
相关推荐
疯狂成瘾者1 分钟前
后端系统、服务稳定性里核心的指标有哪些
数据库
SPC的存折30 分钟前
openEuler 24.03 MariaDB Galera 集群部署指南(cz)
linux·运维·服务器·数据库·mysql
仲芒31 分钟前
[24年单独笔记] MySQL 常用的 DML 命令
数据库·笔记·mysql
SPC的存折43 分钟前
MySQL 8.0 分库分表
linux·运维·服务器·数据库·mysql
蓦然乍醒1 小时前
使用 DBeaver 还原 PostgreSQL 备份文件 (.bak) 技术文档
数据库·postgresql
XDHCOM1 小时前
Redis节点故障自动恢复机制详解,如何快速抢救故障节点,确保数据不丢失?
java·数据库·redis
QCzblack1 小时前
BugKu BUUCTF ——Reverse
java·前端·数据库
cyber_两只龙宝1 小时前
【Oracle】Oracle之DQL中WHERE限制条件查询
linux·运维·数据库·云原生·oracle
luis的妙妙屋1 小时前
主流数据库数据类型对比分析
数据库
XDHCOM1 小时前
ORA-00054资源忙故障修复,远程处理Oracle报错解决方案,数据库锁超时NOWAIT指定问题排查
数据库·oracle