一、 服务启停与创建

1. 服务启动

启动方法

  • 直接运行postgres进程启动
  • 使用pg_ctl命令
#直接运行postgres进程启动
postgres -D $PGDATA &#使用pg_ctl命令
pg_ctl -D $PGDATA start

在Linux 7可以配置/usr/lib/systemd/system/postgresql.service文件,以systemctl命令启动pg,但这种方法本质上跟使用pg_ctl是一样的,参考

linux - Systemd postgresql start script - Unix & Linux Stack Exchange

单用户模式

在启动pg服务时添加 --single参数,常用的一种情况是,当记录年龄离2^31还有100万时,db将阻止用户连接,此时就需要启动到单用户模式执行vacuum

postgres --single -D $PGDATA &

2. 服务停止

停止模式

  • smart shutdown(相当于Oracle normal模式):不允许新连接,待已有连接全部结束后关闭数据库
  • fast shutdown(相当于Oracle immediate模式):不允许新连接,向所有活跃的服务进程发送SIGTERM信号让它们立即退出,之后等待所有子进程退出并关闭数据库
  • immediate shutdown(相当于Oracle abort模式):不允许新连接,主进程postgres向所有子进程发送SIGQUIT信号并且立即退出,所有子进程也会立即退出。下次启动时会redo wal日志进行实例恢复

信号类型

  • SIGTERM:对应smart shutdown模式
  • SIGINT:对应fast shutdown模式
  • SIGQUIT:对应immediate shutdown模式

停止方法

  • 直接向postgres主进程发送signal信号
  • 使用pg_ctl命令
#直接向postgres主进程发送signal信号
kill -TERM `head -1 /PGDATA目录/postmaster.pid`
kill -INT `head -1 /PGDATA目录/postmaster.pid`
kill -QUIT `head -1 /PGDATA目录/postmaster.pid`#使用pg_ctl命令
pg_ctl stop -D $PGDATA -m smart
pg_ctl stop -D $PGDATA -m fast
pg_ctl stop -D $PGDATA -m immediate

3. 重启pg

pg_ctl stop -D $PGDATA -m fast
pg_ctl start -D $PGDATA#快速重启
pg_ctl -D $PGDATA restart -m fast

4. pg_ctl功能

  • 初始化pg实例
  • 启动、终止、重启pg服务
  • 查看pg服务状态
  • reload配置文件
  • 向指定进程发送信号

5. 查看控制文件内容

#不用加控制文件名
pg_controldata

二、 psql常用命令

1. 常用元命令

  • \h      查看sql语法
  • \?      命令行操作的帮助
  • Tab键可以补全目录
  • \i sql文件     执行sql文件
  • \l      列出所有的数据库
  • \dn     列出所有schema
  • \db     显示所有表空间(pg中的表空间是一个目录,表放在表空间相当于将表的数据文件放到该目录之下)
  • \d     查看当前schema 中所有的表、视图、序列
  • \d+   同上,但是多额外信息,下面几个命令都有带+版,能看到更详细的信息
  • \d schema.obj   查看对象结构(相当于desc)
  • \dt     只显示匹配的表
  • \di     只显示匹配的索引
  • \ds     只显示序列
  • \dv     只显示视图
  • \df      只显示函数
  • \sf 函数名   查看函数定义
  • \du 或 \dg   列出数据库中所有角色或用户(pg中是一样的)
  • \dp 或 \z 表名   显示表的权限分配情况
  • \x      横纵显示切换 (类似mysql \G)
  • \dT+   显示扩展类型相关属性及描述
  • \q      退出pg命令行
  • \z 或 \dp 表名    显示表的权限分配情况
  • \timing    显示执行时间
  • \watch 5    每五秒循环执行sql语句
  • \c dbname      切换数据库
  • \conninfo   查看连接信息
  • \echo 字符串  输出一行信息
  • \encoding 字符集名      设置客户端字符集
  • \set [NAME [VALUE]]    设置内部变量,不加参数则列出内部变

  • set search to schema   切换schema

2. 常用参数

非交互模式执行脚本

psql -f file_path/file_name

非交互模式执行SQL

psql -d db_name -c "sql语句1;sql语句2;sql语句3;"

ssl连接

psql -h连接串  \ "user=root dbname=postgres sslmode=require"

查看版本

psql -V
psql -c "select version()"

执行os命令

\! ls
\cd /tmp

传变量

\set v_id 2
select * from test where id=:v_id;
#或
psql -v v_id=1 mydb pguser -f select.sql

-t只显示输出结果,-A去除尾部空行(shell脚本取结果常用)

psql -At -c "sql" 

获取psql中命令实际执行的sql:在启动时加入 -E 或执行 \set ECHO_HIDDEN on

psql -E mydb pguser

关闭pg的自动提交(AUTOCOMMIT不能小写)

\set AUTOCOMMIT off

三、 其他psql命令

可以作为参考

1. psql参数

基本语法 支持参数 参数含义
psql 连接参数 -h 数据库服务器的主机名或IP
-p 数据库服务器的端口号
-U 连接该数据库服务器时使用的数据库用户
-w 连接服务器时不需要输入用户密码
-W 连接服务器时需要输入用户密码
通用参数 -c 执行单一SQL命令
-d 指定要连接的数据库
-f sql脚本文件
-l 输出服务器中的所有数据库名
-v 设置psql的变量,形如 -v PARAMETER=VALUE
-V 输出版本信息
-X 不读取启动文件~/.psqlrc
-1(one) 以单一事务执行命令文件
-? 显示帮助信息
输入输出参数 -a 显示所有来自脚本的输入
-b 回显失败的命令
-e 回显发送给服务器的命令
-E 回显内部命令产生的查询
-L 指定会话日志文件
-n 禁用增强命令行编辑功能(readline)
-o 将查询结果输出到文件或Linux管道
-q 静默方式运行(只输出结果,不显示消息)
-s 单步模式,该模式下需要对每个命令进行确认
-S 单行模式,该模式下一行就是一条 SQL 命令
输出格式参数 -A 非对齐表格输出模式
-F 为字段设置分隔符,用于不整齐的输出,缺省为"|"
-H HTML表格输出模式
-P 设置将变量打印到参数的选项(查阅 \pset 命令)
-R 为不整齐的输出设置行分隔符(默认:换行符号)
-t 只打印记录
-T 设定HTML表格标记属性(例如,宽度,边界)
-x 打开扩展表格输出
-z 为不整齐的输出设置字段分隔符为字节0
-O 为不整齐的输出设置行分隔符为字节0

2. 元命令

功能 命令 命令作用
获取帮助 \? [commands] 显示元命令帮助说明
\? options 显示psql命令的帮助信息
\? variables 显示psql变量的帮助信息
\h [commands] 显示SQL命令的帮助信息
一般性 \copyright 显示PostgreSQL的发行和使用条款
\g [file] 执行命令,然后将结果输出到文件
\gset [PREFIX] 执行命令,然后以psql变量存储结果
\q 退出psql
\watch [sec] 每个[SEC]秒,重复执行sql命令
查询 \d[S+] 列出当前数据库中的表、视图、序列
\da[S] 列出聚合函数
\db[+] 列出表空间
\dc[S+] 列出字符转码函数
\dC[+] 列出类型转换函数
\dd[S] 列出对象描述
\ddp 列出缺省权限
\dD[S+] 列出域
\det[+] 列出foreign table
\des[+] 列出foreign server
\deu[+] 列出用户映射
\dew[+] 列出foreign data wrapper
\df[antw][S+] 列出[聚合/常规/触发器/窗口]函数
\dF[+] 列出文本检索配置
\dFd[+] 列出文本检索字典
\dFp[+] 列出文件检索解析器
\dFt[+] 列出文件检索模板
\dg[+] 列出角色
\di[S+] 列出索引
查询 \dl     列出大对象
\dL[S+] 列出所有过程语言
\dm[S+] 列出所有物化视图
\dn[S+] 列出所有模式
\do[S]  列出所有操作符
\dO[S+] 列出所有排序规则
\dp     列出表、视图、序列的访问权限
\drds  列出每个数据库的角色定义
\ds[S+] 列出序列
\dt[S+] 列出表
\dT[S+] 列出数据类型
\du[S+] 列出角色
\dv[S+] 列出视图
\dE[S+] 列出外部表
\dx[+]  列出扩展
\dy     列出事件触发器
\l[+]   列出数据库
\sf[+]  列出指定函数的定义
\z      等同于\dp
连接  \c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] 在psql下,以指定用户连接到指定端口服务器的数据库
\encoding [ENCODING] 设置客户端编码
\password [USERNAME]  安全的设置用户密码
\conninfo 显示当前连接的相关信息
操作系统 \cd [DIR] 切换工作目录
\setenv NAME [VALUE] 设置/清空环境变量
\timing [on|off] 是否开启命令计时命令
\! [COMMAND] 执行操作系统命令
内置变量 \prompt [TEXT] NAME 提示用户设置内置变量
\set [NAME [VALUE]] 设置内置变量
\unset NAME  重置变量
输入输出 \copy ... 执行copy命令,将数据流发送到客户端主机
\echo [STRING] 标准屏幕输出指定字符串
\i FILE  执行操作系统脚本
\ir FILE   与\i
\o [FILE]  将查询结果输出到指定文件
\qecho [STRING] 用法类似\o,将字符串写到查询输出流
缓存区 \e [FILE] [LINE]  使用外部编辑器编辑查询缓存区(或文件)
\ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义
\p 显示查询缓存区的内容
\r  重置(清除)查询缓存区
\s [FILE] 显示历史记录或将历史记录保存在文件中
\w FILE 将查询缓存区的内容写入文件
输出格式 \a 在非对齐模式和对齐模式之间切换
\C [STRING] 设置表的标题,如果没有的标题就取消
\f [STRING] 显示或设定非对齐模式查询输出的字段分隔符
\H  切换为HTML输出模式 (缺省关闭)
\pset [NAME [VALUE]] 设置表输出选项
\t [on|off] 只显示记录 (缺省关闭)
\T [STRING] 设置HTML <表格>标签属性, 如果没有的话取消设置
\x [on|off|auto]  切换扩展输出模式(缺省关闭)

参考

PGCE课程《psql使用》

psql元素周期表

pg服务管理 与 psql常用命令相关推荐

  1. PostgreSQL客户端psql常用命令

    使用psql客户端访问数据库, 列出了psql常用命令和参数. 常用命令 -- 使用指定用户和IP端口登陆 psql -h 10.43.159.11 -p 5432 -U postgres -W -- ...

  2. NodeJS管理利器 - pm2常用命令

    pm2常用命令 pm2是node进程管理器,在服务器上搭建node服务是把利器.最近整理了下常用的一些命令,会持续进行更新. 安装: npm install pm2 -g //安装pm2 pm2 up ...

  3. Oracle 数据库相关主题:用户、权限、常用管理工具、常用命令

    1. Oracle数据库中SYS.SYSTEM.DBSNMP.SYSMAN 四种用户有什么区别? SYS用户(超级管理员):sys用户具有"SYSDBA"或者"SYSOP ...

  4. MacBook软件包的管理器-Homebrew常用命令

    Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装.卸载.更新.查看.搜索等很多实用的功能.简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷.是一款 ...

  5. Python包管理工具PIP常用命令详解

    1. PIP安装 目前Python2.7.10以上版本和Python3.3以上版本都已经自带了setuptools及pip,因此不需要额外考虑安装pip,只需要在安装的时候配置好就可以使用. 2. P ...

  6. 【书摘001】android 底层开发技术实战详解 - 基础 - 进程管理的一些常用命令

    文章列举了常用的进程管理调试的命令

  7. msys2软件包管理工具pacman常用命令

    pacman是arclinux中的软件管理工具,也是widows上msys2默认的软件管理工具.pacman可以直接从网络上的软件仓库下载安装及删除软件,自动处理依赖关系,类似ubuntu中的apt- ...

  8. linux 解压缩后没权限,Linux的权限管理及基础常用命令

    chmod  改变文件或目录权限 英语原意:change the permissions mode of a file 语法:1.chmod[ugoa][+-=][rwx][文件或目录] 执行权限:文 ...

  9. CentOS7服务管理(重启,停止,自动启动命令)

    我们对service和chkconfig两个命令都不陌生,systemctl 是管制服务的主要工具, 它整合了chkconfig 与 service功能于一体. systemctl is-enable ...

最新文章

  1. netty-阻塞模式,非阻塞模式
  2. java 大小相间排序_ArrayList实现根据某属性大小相间排序
  3. AUTOSAR从入门到精通100讲(二十八)-AutoSar之CAN网络管理
  4. 2021-08-15
  5. html5与之前版本,IT兄弟连HTML5教程HTML5做到了与之前版本的兼容
  6. 频繁项目集java实现_关联分析(2):Apriori产生频繁项集
  7. 一步步学Qt,第九天-QSTL与STL-Qvector,vector
  8. Ovi Store标志着App store模式大战正式开启
  9. 阿里云思维导图系列(一)开篇
  10. Passenger 和 Nginx
  11. 如何理解相关性系数(pearson、spearman、kendall)
  12. 函数空间一览:从线性空间到再生核希尔伯特空间
  13. 在c语言中输出8进制数,16进制数
  14. Scala之类型参数化:Type Parameterization
  15. B05 - 048、ReduceTask工作机制
  16. 1577. 条条大路通罗马 Java题解 (dijkstra综合应用,map)【PAT甲级1087】
  17. Charle和Fiddler抓包 unknown 和证书无效的解决方案
  18. 数学思想方法猜想与反驳(1)归纳猜想
  19. IBM AIX 5.3 系统管理 -- 监视和性能优化二
  20. selenium用法详解【从入门到实战】【Python爬虫】【4万字】

热门文章

  1. [golang gin框架] 27.Gin 商城项目-购物车
  2. http状态码有哪些?代表什么意思?(查询手册而已)
  3. 2021年浏阴一中高考成绩查询,2021年湖南高考最高分多少分,历年湖南高考状元
  4. 微信小程序基于百度云实现图文识别(胎教级教程)
  5. android nv21,NV21与I420
  6. 初创游戏企划草案经验谈
  7. 结构体 struct 的深入理解
  8. SQLMAP-POST注入
  9. 模型推理时显存不足问题
  10. 全球5G模组厂商型号价格对比