PostgreSQL12客戶端及常用命令介紹
阿新 • • 發佈:2021-08-25
pgadmin客戶端
下載地址
https://www.postgresql.org/ftp/pgadmin/pgadmin4/v5.0/windows/
右鍵以管理員身份執行,下一步安裝即可。
psql常用命令介紹
- 檢視資料庫列表
\l - 查看錶空間列表
\db - 查看錶定義
\d 接表名 - 查看錶大小
\dt+ 接表名 - 檢視索引大小
\di 接索引名 - 將SQL命令的語法列出
\h 後接SQL命令關鍵字 - 檢視使用者
\du - 切換連線的資料庫
\c postgres - 檢視資料庫最大連線數
show max_connections; - 檢視資料庫當前連線數
select count(*), usename from pg_stat_activity group by usename; - 資料庫預留給超級使用者的連線數
show superuser_reserved_connections; - 備份庫中所有表
pg_dump -U postgresql test >/tools/test.sql - 備份庫中指定的表
pg_dump -U postgresql test -t tb_emp >/tools/tb_emp.sql - 備份所有資料庫
pg_dumpall -U postgres >/tools/all.sql - 恢復資料
psql -U postgres -d test </tools/test.sql - 慢查詢
select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '5 s' order by query_start; - 檢視使用者名稱密碼
select usename,passwd from pg_shadow; - 修改使用者名稱密碼
ALTER USER qguser PASSWORD 'qguser' - 匯出表中資料
create table test_uc as select * from t_uc_organize;
copy test_uc to '/opt/postgres/test_uc.txt' with delimiter as '|'; - 匯出表結構
/web/pgsql/bin/pg_dumpall -U postgres -s >all.sql - 匯入資料
/web/pgsql/bin/psql -U postgres </web/all.sql - 獲取當前db所有表
select * from pg_tables; - 查看錶結構
\d tablename; - 普通使用者登入
psql -U username -W databasename - 建立只讀使用者
\c gmcc;
create user gmccuser1 with password 'GEz5qCW/AtxvVKpAGmcc';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO gmccuser1; - 檢視某使用者的表許可權
select * from information_schema.table_privileges where grantee='testuser'; - 整理索引:
REINDEX TABLE t_els_system_setting; - 回收空間:
vacuum full t_els_system_setting; - 查詢鎖表程序id
select pid from pg_locks l join pg_class t on l.relation = t.oid where t.relkind = 'r' and t.relname = 't_tbcs_order_snap'; - 查詢鎖表語句
select pid, state, usename, query, query_start from pg_stat_activity where pid in ( select pidfrom pg_locks l join pg_class t on l.relation = t.oid and t.relkind = 'r' where t.relname = 't_tbcs_order_snap'); - 查詢所有活動的被鎖的表
select pid, state, usename, query, query_start
from pg_stat_activity
where pid in (
select pid from pg_locks l
join pg_class t on l.relation = t.oid
and t.relkind = 'r'
); - 解鎖
SELECT pg_cancel_backend(pid); - 批量解鎖
select pg_cancel_backend(pid)
from pg_stat_activity
where pid in (
select pid from pg_locks l
join pg_class t on l.relation = t.oid
and t.relkind = 'r'
); - 檢視當前正在使用的連線數
select count(1) from pg_stat_activity; - 顯示系統保留的使用者數
show superuser_reserved_connections;
psql執行sql指令碼
/web/pgsql/bin/psql -c "select current_user";
加上-At選項僅顯示命令返回的結果。
psql定製日常維護指令碼
如果psql沒有帶-X選項,psql嘗試讀取和執行使用者~/.psqlrc啟動檔案中的命令,結合這個檔案能夠方便的預先定製維護指令碼。
- 查詢活動會話
vim ~/.psqlrc
\set active_session 'select pid,usename,datname,client_addr from pg_stat_activity where pid <> pg_backend_pid() and state='active' order by query;' - 查詢會話等待事件
vim ~/.psqlrc
\set wait_event 'select pid,usename,datname,query,client_addr,wait_event_type,wait_event from pg_stat_activity where pid <> pg_backend_pid() and wait_event is not null order by wait_event_type;' - 檢視資料庫連線數
vim ~/.psqlrc
\set connections 'select usename,datname,client_addr,count(*) from pg_stat_activity where pid <> pg_backend_pid() group by 1,2,3 order by 1,2,4 desc;'
psql亮點功能
- 顯示SQL執行時間
\timing命令用於設定開啟或關閉顯示SQL的執行時間,單位為毫秒。 - 反覆執行當前SQL
\watch seconds
seconds表示兩次執行間隔的時間,以秒為單位,預設為2秒。 - Tab鍵自動補全
- 支援箭頭上下翻歷史SQL命令
- psql客戶端提示符
%M:資料庫伺服器別名,不是指主機名,顯示的是psql -h引數設定的值;
%>:資料庫伺服器的埠號;
%n:資料庫會話的使用者名稱;
%/:當前資料庫名稱;
%#:如果是超級使用者則顯示”#“,其它使用者則顯示”>“;
%p:當前資料庫連線的後臺程序號;
%R:在PROMPT1中通常顯示”=“,如果程序被斷開則顯示”!“。
配置
vim ~/.psqlrc
\set PROMPT1 '%/@%M:%>%R%#'