1. 程式人生 > 其它 >PostgreSQL12客戶端及常用命令介紹

PostgreSQL12客戶端及常用命令介紹

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%#'