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.pswp.cn/news/712357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712357.shtml
英文地址,請注明出處:http://en.pswp.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…