PostgreSQL是功能最接近Oracle的開源數據庫,對標Oracle 的sqlplus工具,在PostgreSQL中也有一個類似的命令行工具,就是plsq,它允許你交互地鍵入SQL或命令,本節就來講講psql的使用方法。
一. 進入psql
psql -h <hostname or ip> -p <端口> [數據庫名稱] [用戶名稱]
如下:通過postgres用戶進入jimhe這個本地數據庫:
psql -h localhost -p 5432 jimhe postgres
如果相應的環境變量都配好了,包括這幾個環境變量:
PGDATABASE,PGHOST,PGPORT,PGUSER
配置好之后,就可以直接輸入plsq進入psql界面:
進入后可以看到psql的版本是11.2.
通過使用plsql -l 可以查看有哪些數據庫。
二.常用的命令
psql的命令大多數都是以\開頭的,下面將介紹常用的psql命令
1. \l 查看有哪些數據庫
2. \c 用於切換數據庫
3. \q 用於退出psql命令行界面
4. \d命令
\d命令的格式如下:
\d [ pattern ]
\d [ pattern ] +
該命令用於顯示每個匹配關系(表,視圖,索引,序列)的信息
(1)如果\d 后面什么都不帶,會顯示數據庫所有的表,視圖,索引,序列。
(2)\d后面跟一個表名,表示顯示這個表的結構定義
(3)\d 后跟一個索引,可以顯示索引的信息
(4)\d后面跟通配符如“*” 或“?”
(5) \d后面可以跟視圖
(6)\d+命令顯示比\d更多的信息包括表和列的注釋等相關信息
(7) 匹配不同對象類型的\d命令
\dt 顯示匹配的表
\di 顯示匹配的索引
\ds 顯示匹配的序列
\dv 顯示匹配的視圖
\df 顯示匹配的函數
(8)如果想顯示SQL已經執行的時間,可以使用\timing on 命令開啟計時功能,如果要關閉,使用\timing off關閉計時功能。
(9)列出所有的schema 使用 \dn
(10)顯示所有的表空間 使用\db
(11) 列出所有的角色或者用戶,使用\du 或者\dg命令。
這兩個命令其實是等價的,在PG中角色和用戶是一個概念。
(12)顯示權限分配情況 \dp或者\z
(13)\i file 執行文件中的命令
一般\i用於執行sql文件的腳本
三.指定字符集編譯的命令
當客戶端的字符編碼與服務器不一致時,可能出現亂碼現象,可以使用\encoding命令指定客戶端的字符編碼。
比如:
\encoding gbk 設置客戶端的字符編碼為gbk.
\encoding utf8 設置客戶端的字符編碼為uft8
四. \pset 命令
\pset命令用於設置輸出的格式
\pset border 0:表示輸出內容無邊框
\pset border 1:表示邊框只在內部存在
\pset border 2:表示內外都有邊框
上面三種風格可以比較明顯的看出來,可以根據自己喜好設置。
五. \x命令
使用\x命令,可以把表中的每一行的每列數據都拆分為單行展示,這種適合列比較多,界面顯示不全的情況下比較有用。
擴展顯示相當於列轉行了,把多列顯示成多行,更容易查看。
關閉擴展顯示可以再輸入一次\x 。
六.顯示信息命令
\echo命令用於輸出一行信息
這個命令和shell中的echo命令功能是一樣的,打印一條記錄。可以在編寫sql腳本中使用,然后調用psql執行時就會打印出來相應的信息。
比如sql文件內容如下:
\echo ----------------------------------------------------
select * from code_test.test limit 10;
\echo -----------------------------------------------------
執行命令后結果日下所示:
七.自動提交功能
在psql中事務是自動提交的,為了控制事務的進行,不希望自動提交事務,可以采用兩種方法來進行操作。
第一種方法就是在命令的開始輸入begin; 然后在命令的結束位置輸入 commit或者rollback, commit表示事務提交,rollback表示事務回滾。
第二種方式就是通過設置 \set AUTOCOMMIT off將自動提交功能關閉。
八 更多的命令
通過使用\? 可以獲取到更多的命令的解釋。