PostgreSQL开发与实战(2)常用命令

作者:太阳

1、连库相关

#连库
$ psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称]
#连库并执行命令
$ psql -h <hostname or ip> -p <端口> -d [数据库名称]  -U <用户名> -c "运行一个命令;"

备注:
可以将连接命令中的参数在环境变量中指定;
比如环境变量中配置如下,那么执行psql等同于执行psql -h 192.168.56.11 -p 5432 testdb postgres。

export PGDATABASE=testdb
export PGHOST=192.168.56.11
export PGPORT=5432
export PGUSER=postgres

2、一些查看命令

#查看命令语法的帮助命令
\h
#查看有哪些库
\l
#进入指定数据库
\c $db_name
#查看当前库下的所有pattern(表、视图、索引、序列)信息
\d
#查看当前库下的pattern(表、视图、索引、序列)信息,并输出详细内容
\d +
#查看当前库下某张表的结构定义或某个表的索引信息
\d $table_name/$index_name
#只查看当前库下表的信息
\dt
#只查看当前库下的索引信息
\di
#只查看当前库下的序列信息
\ds
#只查看当前库下的视图信息
\dv
#只查看当前库下的函数信息
\df
#列出当前库下所有shcema
\dn
#列出所有的表空间
\db
#列出所有的用户/角色的高级权限
\du或\dg
#列出表/视图/序列及访问它们的相关权限
\dp或\z
#列出默认权限
\ddp

3、修改库名

1.先关闭该库下的连接会话:

# SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity WHERE datname='t1' AND pid<>pg_backend_pid();pg_terminate_backend 
----------------------t
(1 row)

说明:
pg_terminate_backend:用来终止与数据库的连接的进程id的函数。
pg_stat_activity:是一个系统表,用于存储服务进程的属性和状态。
pg_backend_pid():是一个系统函数,获取附加到当前会话的服务器进程的ID。

2.再用alter修改库名:

# alter database t1 rename to t2;
ALTER DATABASE

4、复制数据库到相同的实例

# 创建targetdb库并将sourcedb库中的数据复制到targetdb
CREATE DATABASE targetdb WITH TEMPLATE sourcedb;

5、schema相关

#查看库下的schema:SELECT * FROM information_schema.schemata;或者\dn
#创建schema:create schema $schema_name;
#创建schema并指定owner用户create schema $schame_name authorization $user_name;
#修改schema名称或属主alter schema $old_name rename to $new_name;alter schema $schema_name owner to $new_owner;
#查看当前所在的schema:show search_path;
#切换schema:set search_path to $schema_name;
#删除一个空的schema(其中所有对象已被删除):drop schema $schema_name;
#删除schema及其中包含的所有对象:drop schema $schema_name cascade;

6、查看活跃会话

#查看活跃会话
select * from pg_stat_activity where state<>'idle' ;#查看包含在事物内的会话
select * from pg_stat_activity where state like '%idle%transaction%';#查看耗时1s以上的活跃会话
select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '1 s' order by query_start ;

pg_stat_activity视图各字段含义:

字段描述
datid数据库OID。
datname数据库名称。
procpid后端进程的进程ID。(说明:只有4.3版本支持procpid字段。)
pid后端进程的进程ID。(说明:只有6.0版本支持pid字段。)
sess_id会话ID。
usesysid用户OID。
usename用户名。
current_query当前正在执行的查询。默认情况下,查询文本最多显示1024个字符,超出部分会被截断,如需显示更多字符,可以通过参数track_activity_query_size配置。(说明:只有4.3版本支持current_query字段。)
query最近查询的文本。如果state为active,显示当前正在执行的查询。在其他状态下,显示上一个执行的查询。 默认情况下,查询文本最多显示1024个字符,超出部分会被截断,如需显示更多字符,可以通过参数track_activity_query_size配置。(说明:只有6.0版本支持query字段。)
waiting如果当前SQL在锁等待,值为True,否则为False。
query_start当前活动查询开始执行的时间。如果state不是active,显示上一个查询的开始时间。
backend_start当前后端进程的开始时间。
backend_xid后端进程当前的事务ID。
backend_xmin后端的xmin范围。
client_addr客户端的IP地址。如果client_addr为空,表示客户端通过服务器上的Unix套接字连接,或者表示进程是内部进程(例如AUTOVACUUM)。
client_port客户端和后端通信的TCP端口号。如果使用Unix套接字,值为-1。
client_hostname客户端主机名,通过client_addr的反向DNS查找报告。
application_name客户端应用名。
xact_start当前事务的启动时间。如果没有活动事务,值为空。如果当前查询是第一个事务,值与query_start的值相同。
waiting_reason当前执行等待的原因,可能是等锁或者等待节点间数据的复制。
state后端的当前状态,取值范围:active,idle,idle in transaction,idle in transaction (aborted),fastpath function call,disabled。(说明:只有6.0版本支持state字段。)
state_change上次state状态切换的时间。(说明:只有6.0版本支持state_change字段。)
rsgid资源组OID。
rsgname资源组名称。
rsgqueueduration对于排队查询,查询排队的总时间。

7、kill会话

##kill会话
select pg_terminate_backend($pid);##只取消当前某一个进程的查询操作,但不能释放数据库连接
select pg_cancel_backend($pid);

8、查看库表大小

##1.查看各库大小:
select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database; ##2.查看当前库下各schema表数量
select schemaname,count(*) from pg_stat_user_tables group by schemaname;##3.查看当前库下top 20表或去掉limit 20查看所有表大小
select relname,schemaname, pg_size_pretty(pg_total_relation_size(relid)) from pg_stat_user_tables order by pg_total_relation_size(relid) desc limit 20;##4.查看某张表总大小(表数据+索引数据):
select pg_size_pretty(pg_total_relation_size('xxx')); ##5.查看表数据大小,不包含索引:
select pg_size_pretty(pg_table_size('xxx')); ##6.查看表的索引大小:
select pg_size_pretty(pg_indexes_size('xxx'));

9、表字段变更

##1.增加字段:
alter table tbl_name add column col_name [col definer] ;
##2.删除字段:
alter table tbl_name drop column col_name ;
##3.增加约束:
alter table tbl_name add [constraint];eg:alter table tbl_name alter column col_name set not null; (非空约束)
##4.删除约束:
alter table tbl_name drop constraint_name; ##(约束名\d+ tbl_name查看)        
##5.修改字段数据类型:
alter table tbl_name alter column col_name [col definer];eg:alter table tai alter column name type varchar(500);
##6.重命名字段名称:
alter table tbl_name rename column col_name to col_name_new;

10、pg_ctl

##1.初始化数据库实例
pg_ctl init[db] [-s] [-D datadir] [-o options]##2.启动、关闭数据库实例等
pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]
pg_ctl stop [-W] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
pg_ctl status [-D datadir]##3.重新加载配置文件(pg_hba.conf、postgresql.conf等)
pg_ctl reload [-s] [-D datadir]

pg_ctl后缀参数含义,详见官方文档:http://postgres.cn/docs/13/app-pg-ctl.html

11、查看一些信息

##1.查看当前数据库版本信息
select version();
##2.查看数据库的启动时间
select pg_postmaster_start_time();
##3.查看最后load配置文件的时间
select pg_conf_load_time();
备注:使用$pg_ctl reload会改变配置的装载时间
##4.显示当前数据库时区
show timezone;
##5.查看当前用户名
select user;或elect current_user;
##6.查看session用户
select session_user;
##备注:session_user查看的是连接数据库的原始用户,如果中途用set role改变用户角色,用session_user查看的还是原始用户,用user查看的是改变后的用户
##7.查看当前连接的数据库名称
select current_catalog;或select current_database();
##8.查看当前session所在客户端的IP及端口
select inet_client_addr(),inet_client_port();
##9.查看当前数据库服务器的IP地址及端口
select inet_server_addr(),inet_server_port();
##10.查看当前session的后台服务进程的PID
select pg_backend_pid();
11.查看当前参数数值
show xxx;或select current_setting('xxx');
12.修改当前session的参数配置
set xxx to 'xxx';或select set_config('xxx','xxx',false);
13.查看当前正在写的WAL文件
select pg_xlogfile_nale(pg_current_xlog_location());
14.查看当前WAL文件的buffer还有多少字节没有写入磁盘
select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());
15.查看数据库实例是否正在做基础备份
select pg_is_in_backup(),pg_backup_start_time();
16.查看当前数据库实例处于Hot Standby状态还是正常数据库状态
select pg_is_in_recovery();
备注:如果结果为真,则为Hot Standby状态
17.查看表对应的数据文件
select pg_relation_filepath('xxx');

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/712357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从理论到落地,大模型评测体系综合指南

1956年夏&#xff0c;“人工智能” 这一概念被提出。距今已有近70年的发展历史。中国科学院将其划分为六个阶段&#xff1a;起步发展期&#xff08;1956年—1960s&#xff09;&#xff0c;反思发展期&#xff08;1960s-1970s&#xff09;,应用发展期&#xff08;1970s-1980s),低…

SpringBoot集成Activiti案例

前言 Activiti项目是一项新的基于Apache许可的开源BPM平台&#xff0c;从基础开始构建&#xff0c;旨在提供支持新的BPMN 2.0标准&#xff0c;包括支持对象管理组&#xff08;OMG&#xff09;&#xff0c;面对新技术的机遇&#xff0c;诸如互操作性和云架构&#xff0c;提供技…

3.1log | 62.不同路径,63. 不同路径 II,343. 整数拆分,96.不同的二叉搜索树

62.不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,0));for(int i0;i<n;i) dp[0][i]1;for(int i0;i<m;i) dp[i][0]1;for(int i1;i<m;i){for(int j1;j<n;j){dp[i][j]dp[i][j-1]dp[i-…

c++八股文:c++编译与内存管理

文章目录 1. c内存管理2. 堆与栈3.变量定义与生命周期4.内存对齐5.内存泄露6.智能指针7.new 和 malloc 有什么区别8.delete和free的区别9.什么野指针&#xff0c;怎么产生的&#xff0c;如何避免野指针10.野指针和指针悬浮的区别11.字符串操作函数参考 1. c内存管理 c在运行程…

LeetCode刷题--- 乘积为正数的最长子数组长度

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

ScheduledThreadPoolExecutor学习

简介 ScheduledThreadPoolExecutor 是 Java 中的一个类&#xff0c;它属于 java.util.concurrent 包。这个类是一个线程池&#xff0c;用于在给定的延迟后运行命令&#xff0c;或者定期地执行命令。它是 ThreadPoolExecutor 的一个子类&#xff0c;专门用于处理需要定时或周期…

解释索引是什么以及它们是如何提高查询性能的

索引在数据库管理系统中是一个重要的数据结构&#xff0c;用于帮助快速检索数据库表中的数据。它可以被看作是一个指向表中数据的指针列表&#xff0c;这些指针按照某种特定的顺序&#xff08;如字母顺序或数字顺序&#xff09;排列。索引的工作原理类似于书籍的目录&#xff1…

Python爬虫实战第二例【二】

零.前言&#xff1a; 本文章借鉴&#xff1a;Python爬虫实战&#xff08;五&#xff09;&#xff1a;根据关键字爬取某度图片批量下载到本地&#xff08;附上完整源码&#xff09;_python爬虫下载图片-CSDN博客 大佬的文章里面有API的获取&#xff0c;在这里我就不赘述了。 一…

kitex 入门和基于grpc的使用

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于kitex系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系…

【Web】青少年CTF擂台挑战赛 2024 #Round 1 wp

好家伙&#xff0c;比赛结束了还有一道0解web题是吧( 随缘写点wp(简单过头&#xff0c;看个乐就好) 目录 EasyMD5 PHP的后门 PHP的XXE Easy_SQLi 雏形系统 EasyMD5 进来是个文件上传界面 说是只能上传pdf&#xff0c;那就改Content-Type为application/pdf&#xff0c;改…

11.盛最多水的容器

题目&#xff1a;给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 解题思路&#xff1a;可以…

判断闰年(1000-2000)

判断规则&#xff1a;1.能被4整除&#xff0c;不能被100整除是闰年,2.能被400整除是闰年 #include <stdio.h>int is_leap_year(int n){if((n % 400 0)||((n % 4 0)&&(n % 100 ! 0)))return 1;elsereturn 0; } int main() {int i 0;int count 0;for(i 1000;…

基于PHP的在线英语学习平台

有需要请加文章底部Q哦 可远程调试 基于PHP的在线英语学习平台 一 介绍 此在线英语学习平台基于原生PHP开发&#xff0c;数据库mysql。系统角色分为学生&#xff0c;教师和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlphpstudyvscode 二 功能 学生 1 注册/登录/…

C++/Python简单练手题

前言 最近需要开始使用python&#xff0c;但是对python了解的并不多&#xff0c;于是先从很早之前刚学C时写过的一些练手题开始&#xff0c;使用python来实现相同的功能&#xff0c;在温习python基础语法的同时&#xff0c;也一起来感受感受python的魅力 99乘法表 c&#xf…

kettle开发-Day43-加密环境下运行作业

前言&#xff1a; 金三银四&#xff0c;开年第一篇我们来介绍下&#xff0c;怎么在加密情况下运行我们的kettle作业及任务。无疑现在所有企业都认识到加密的重要性&#xff0c;加密后的文件在对外传输的时候不能被访问&#xff0c;访问时出现一堆乱码&#xff0c;同时正常的应用…

1分钟学会Python字符串前后缀与编解码

1.前缀和后缀 前缀和后缀指的是&#xff1a;字符串是否以指定字符开头和结尾 2.startswith() 判断字符串是否以指定字符开头&#xff0c;若是返回True&#xff0c;若不是返回False str1 "HelloPython"print(str1.startswith("Hello")) # Trueprint…

Navicat Premium 16:打破数据库界限,实现高效管理mac/win版

Navicat Premium 16是一款功能强大的数据库管理工具&#xff0c;旨在帮助用户更轻松地连接、管理和保护各种数据库。该软件支持多种数据库系统&#xff0c;如MySQL、Oracle、SQL Server、PostgreSQL等&#xff0c;并提供了直观的图形界面&#xff0c;使用户能够轻松地完成各种数…

【力扣白嫖日记】585.2016年的投资

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 585.2016年的投资 表&#xff1a;Person 列名类型pidinttiv_2015floattiv_2016floatlatfloatlonfloat pid …

AI也来打掼蛋,难道人工智能也能当领导?

在人工智能&#xff08;AI&#xff09;的研究领域中&#xff0c;游戏被视为现实世界的简化模型&#xff0c;常常是研究的首选平台。这些研究主要关注游戏代理的决策过程。例如&#xff0c;中国的传统卡牌游戏“掼蛋”&#xff08;字面意思是“扔鸡蛋”&#xff09;就是一个挑战…

Unity(第十七部)Unity自带的角色控制器

组件Character Controller 中文角色控制器 using System.Collections; using System.Collections.Generic; using UnityEngine;public class player : MonoBehaviour {private CharacterController player;void Start(){player GetComponent<CharacterController>();}v…