PostgreSQL入门之基本工具+常用psql命令+show语法
目錄
?
一、bin目錄下常用執行程序
?1.1 pg_ctl
1.2??psql
1.3?pg_dump
1.4?pg_restore
二、psql命令
語法
三、show語法
語法
常用示例
???????
一、bin目錄下常用執行程序
?1.1 pg_ctl
語法
pg_ctl 是一個用于初始化、啟動、停止或控制PostgreSQL服務器的工具.
?
使用方法:
??pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]????????????????????初始化數據庫實例
??pg_ctl start ???[-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]
??????????????????[-o OPTIONS] [-p PATH] [-c]?????????????????????啟動數據庫服務
??pg_ctl stop ??[-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]??關閉數據庫服務
?
??pg_ctl restart ?[-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
??????????????????[-o OPTIONS] [-c]?????????????????????????????重啟數據庫服務
??pg_ctl reload ??[-D DATADIR] [-s]???????????????????????????重新加載數據庫配置
??pg_ctl status ??[-D DATADIR]???????????????????????????????查看數據庫服務狀態
??pg_ctl promote ?[-D DATADIR] [-W] [-t SECS] [-s]
??pg_ctl kill ????SIGNALNAME PID???????????????????????????
??pg_ctl register [-D DATADIR] [-N SERVICENAME] [-U USERNAME] [-P PASSWORD]
??????????????????[-S START-TYPE] [-e SOURCE] [-W] [-t SECS] [-s] [-o OPTIONS]
?注冊數據庫服務
pg_ctl unregister [-N 服務名稱]?????????????????????????????注銷數據庫服務
?
普通選項:
??-D, --pgdata=數據目錄 ?數據庫存儲區域的位置
??-e SOURCE ?????????????當作為一個服務運行時要記錄的事件的來源
??-s, --silent ??????????只打印錯誤信息, 沒有其他信息
??-t, --timeout=SECS ???當使用-w 選項時需要等待的秒數
??-V, --version ??????????輸出版本信息, 然后退出
??-w, --wait ????????????wait until operation completes (default)
??-W, --no-wait ?????????do not wait until operation completes
??-?, --help ????????????顯示此幫助, 然后退出
如果省略了 -D 選項, 將使用 PGDATA 環境變量.
?
啟動或重啟的選項:
??-c, --core-files ??????在這種平臺上不可用
??-l, --log=FILENAME ???寫入 (或追加) 服務器日志到文件FILENAME
??-o, --options=OPTIONS ?command line options to pass to postgres
?????????????????????????(PostgreSQL server executable) or initdb
??-p PATH-TO-POSTMASTER ?正常情況不必要
?
停止或重啟的選項:
??-m, --mode=MODE ???????可以是 "smart", "fast", 或者 "immediate"
?
關閉模式有如下幾種:
??smart ??????所有客戶端斷開連接后退出
??fast ???????quit directly, with proper shutdown (default)
??immediate ??不完全的關閉退出; 重啟后恢復
?
允許關閉的信號名稱:
??ABRT HUP INT QUIT TERM USR1 USR2
?
注冊或注銷的選項:
??-N 服務名稱 ????注冊到 PostgreSQL 服務器的服務名稱
??-P 口令 ????????注冊到 PostgreSQL 服務器帳戶的口令
??-U 用戶名 ??????注冊到 PostgreSQL 服務器帳戶的用戶名
??-S START-TYPE ??注冊到PostgreSQL服務器的服務啟動類型
?
啟動類型有:
??auto ??????在系統啟動時自動啟動服務(默認選項)
??demand ????按需啟動服務
?
常用示例
pg_ctl ?start ?-D ?$PGDATA ????????啟動數據庫服務
pg_ctl ?restart ?-D ?$PGDATA ??????重啟數據庫服務
pg_ctl stop ?-m fast ??-D ?$PGDATA ?關閉數據庫服務
pg_ctl ?register ?-N ‘postgresq-xx’???$PGDATA 注冊服務,服務名為postgresql-xx
Pg_ctl reload -D ?$PGDATA ?????????重新加載配置、
1.2??psql
語法
psql是PostgreSQL 的交互式客戶端工具。
使用方法:
??psql [選項]... [數據庫名稱 [用戶名稱]]
通用選項:
??-c,--command=命令 ???????執行單一命令(SQL或內部指令)然后結束
?-d, --dbname=數據庫名稱 ??指定要連接的數據庫 (默認:"當前用戶")
??-f, --file=文件名 ?????從文件中執行命令然后退出
??-l, --list ????????????列出所有可用的數據庫,然后退出
??-v, --set=, --variable=NAME=VALUE
???????????????????????????設置psql變量NAME為VALUE
???????????????????????????(例如,-v ON_ERROR_STOP=1)
??-V, --version ???????????輸出版本信息, 然后退出
??-X, --no-psqlrc ????????不讀取啟動文檔(~/.psqlrc)
??-1 ("one"), --single-transaction
??????????????????????????作為一個單一事務來執行命令文件(如果是非交互型的)
??-?, --help[=options] ????顯示此幫助,然后退出
??????--help=commands ?????列出反斜線命令,然后退出
??????--help=variables ????列出特殊變量,然后退出
?
輸入和輸出選項:
??-a, --echo-all ?????????顯示所有來自于腳本的輸入
??-b, --echo-errors ???????回顯失敗的命令
??-e, --echo-queries ?????顯示發送給服務器的命令
?-E, --echo-hidden ???????顯示內部命令產生的查詢
??-L, --log-file=文件名 ?將會話日志寫入文件
??-n, --no-readline ??????禁用增強命令行編輯功能(readline)
??-o, --output=FILENAME 將查詢結果寫入文件(或 |管道)
??-q, --quiet ????????????以沉默模式運行(不顯示消息,只有查詢結果)
??-s, --single-step ??????單步模式 (確認每個查詢)
??-S, --single-line ???????單行模式 (一行就是一條 SQL 命令)
?
輸出格式選項 :
??-A, --no-align ??????????使用非對齊表格輸出模式
??-F, --field-separator=STRING
?????????????為字段設置分隔符,用于不整齊的輸出(默認:"|")
??-H, --html ????????????HTML 表格輸出模式
??-P, --pset=變量[=參數] ???設置將變量打印到參數的選項(查閱 \pset 命令)
??-R, --record-separator=STRING
?????????????為不整齊的輸出設置字錄的分隔符(默認:換行符號)
??-t, --tuples-only ?????只打印記錄i
??-T, --table-attr=文本 ??設定 HTML 表格標記屬性(例如,寬度,邊界)
??-x, --expanded ??????????打開擴展表格輸出
??-z, --field-separator-zero
???????????????????????????為不整齊的輸出設置字段分隔符為字節0
??-0, --record-separator-zero
???????????????????????????為不整齊的輸出設置記錄分隔符為字節0
?
聯接選項:
??-h, --host=主機名 ???????數據庫服務器主機或socket目錄(默認:"本地接口")
??-p, --port=端口 ???????數據庫服務器的端口(默認:"5432")
??-U, --username=用戶名 ???指定數據庫用戶名(默認:"guyan")
??-w, --no-password ??????永遠不提示輸入口令
??-W, --password ??????????強制口令提示 (自動)
常用示例
psql登錄數據庫
psql ?-h ip ?-p 端口號 -U 數據庫用戶 -d ?數據庫
psql往數據庫里執行一條指令(比如SQL)
?psql ?-h ip ?-p 端口號 -U 數據庫用戶 -d ?數據庫 -c ?“select ?version();”
psql列出所有數據庫對象
psql ?-h ip ?-p 端口號 -U 數據庫用戶 -l
?
???????1.3?pg_dump
語法
pg_dump 把一個數據庫轉儲為純文本文件或者是其它格式.
?
用法:
??pg_dump [選項]... [數據庫名字]
?
一般選項:
??-f, --file=FILENAME ?????????輸出文件或目錄名
??-F, --format=c|d|t|p ????????輸出文件格式 (定制, 目錄, tar)
???????????????????????????????明文 (默認值))
??-j, --jobs=NUM ??????????????執行多個并行任務進行備份轉儲工作
??-v, --verbose ???????????????詳細模式
??-V, --version ???????????????輸出版本信息,然后退出
??-Z, --compress=0-9 ??????????被壓縮格式的壓縮級別
??--lock-wait-timeout=TIMEOUT ?在等待表鎖超時后操作失敗
??--no-sync ???????????????????do not wait for changes to be written safely to disk
??-?, --help ??????????????????顯示此幫助, 然后退出
?
控制輸出內容選項:
??-a, --data-only ?????????????只轉儲數據,不包括模式
??-b, --blobs ?????????????????在轉儲中包括大對象
??-B, --no-blobs ??????????????exclude large objects in dump
??-c, --clean ?????????????????在重新創建之前,先清除(刪除)數據庫對象
??-C, --create ????????????????在轉儲中包括命令,以便創建數據庫
??-E, --encoding=ENCODING ?????轉儲以ENCODING形式編碼的數據
??-n, --schema=SCHEMA ?????????只轉儲指定名稱的模式
??-N, --exclude-schema=SCHEMA ?不轉儲已命名的模式
??-o, --oids ??????????????????在轉儲中包括 OID
??-O, --no-owner ??????????????在明文格式中, 忽略恢復對象所屬者
?
??-s, --schema-only ???????????只轉儲模式, 不包括數據
??-S, --superuser=NAME ????????在明文格式中使用指定的超級用戶名
??-t, --table=TABLE ???????????只轉儲指定名稱的表
??-T, --exclude-table=TABLE ???不轉儲指定名稱的表
??-x, --no-privileges ?????????不要轉儲權限 (grant/revoke)
??--binary-upgrade ????????????只能由升級工具使用
??--column-inserts ????????????以帶有列名的INSERT命令形式轉儲數據
??--disable-dollar-quoting ????取消美元 (符號) 引號, 使用 SQL 標準引號
??--disable-triggers ??????????在只恢復數據的過程中禁用觸發器
??--enable-row-security ???????啟用行安全性(只轉儲用戶能夠訪問的內容)
??--exclude-table-data=TABLE ??不轉儲指定名稱的表中的數據
??--if-exists ?????????????當刪除對象時使用IF EXISTS
??--inserts ???????????????????以INSERT命令,而不是COPY命令的形式轉儲數據
??--no-publications ???????????do not dump publications
??--no-security-labels ????????不轉儲安全標簽的分配
??--no-subscriptions ??????????do not dump subscriptions
??--no-synchronized-snapshots ?在并行工作集中不使用同步快照
??--no-tablespaces ????????????不轉儲表空間分配信息
??--no-unlogged-table-data ????不轉儲沒有日志的表數據
??--quote-all-identifiers ?????所有標識符加引號,即使不是關鍵字
??--section=SECTION ???????????備份命名的節 (數據前, 數據, 及 數據后)
??--serializable-deferrable ??等到備份可以無異常運行
??--snapshot=SNAPSHOT ?????????為轉儲使用給定的快照
??--strict-names ?????????????要求每個表和/或schema包括模式以匹配至少一個實體
??--use-set-session-authorization
???????????????????????????????使用 SESSION AUTHORIZATION 命令代替
????????????????ALTER OWNER 命令來設置所有權
?
聯接選項:
??-d, --dbname=DBNAME ??????對數據庫 DBNAME備份
??-h, --host=主機名 ???????數據庫服務器的主機名或套接字目錄
??-p, --port=端口號 ???????數據庫服務器的端口號
??-U, --username=名字 ?????以指定的數據庫用戶聯接
??-w, --no-password ???????永遠不提示輸入口令
??-W, --password ??????????強制口令提示 (自動)
??--role=ROLENAME ?????????在轉儲前運行SET ROLE
?
如果沒有提供數據庫名字, 那么使用 PGDATABASE 環境變量
?
常用示例
默認格式備份指定庫
pg_dump -h ip -p port -U username -d database -f “XXX/database.backup”
指定格式備份指定庫(如明文)
pg_dump -h ip -p port -U username -d database -F p -f “XXX/database.backup”
以明文格式只備份數據庫結構
pg_dump -h ip -p port -U username -d database -F p -s -f “XXX/database.backup”
只備份數據
pg_dump -h ip -p port -U username -d database -F p -a -f “XXX/database.backup”
備份指定表
pg_dump -h ip -p port -U username -d database -t tablename -f “XXX/database.backup”
???????1.4?pg_restore
語法
pg_restore 從一個歸檔中恢復一個由 pg_dump 創建的 PostgreSQL 數據庫.
?
用法:
??pg_restore [選項]... [文件名]
?
一般選項:
??-d, --dbname=名字 ???????連接數據庫名字
??-f, --file=FILENAME ?????output file name (- for stdout)
??-F, --format=c|d|t ??????備份文件格式(應該自動進行)
??-l, --list ??????????????打印歸檔文件的 TOC 概述
??-v, --verbose ???????????詳細模式
??-V, --version ???????????輸出版本信息, 然后退出
??-?, --help ??????????????顯示此幫助, 然后退出
?
恢復控制選項:
??-a, --data-only ????????????只恢復數據, 不包括模式
??-c, --clean ?????????????????在重新創建之前,先清除(刪除)數據庫對象
??-C, --create ????????????????創建目標數據庫
??-e, --exit-on-error ?????????發生錯誤退出, 默認為繼續
??-I, --index=NAME ????????????恢復指定名稱的索引
??-j, --jobs=NUM ??????????????執行多個并行任務進行恢復工作
??-L, --use-list=FILENAME ?????從這個文件中使用指定的內容表排序
???????????????????????????????輸出
??-n, --schema=NAME ???????????在這個模式中只恢復對象
??-N, --exclude-schema=NAME ???do not restore objects in this schema
??-O, --no-owner ??????????????不恢復對象所屬者
??-P, --function=NAME(args) ???恢復指定名字的函數
??-s, --schema-only ??????????只恢復模式, 不包括數據
??-S, --superuser=NAME ????????使用指定的超級用戶來禁用觸發器
??-t, --table=NAME ????????????restore named relation (table, view, etc.)
??-T, --trigger=NAME ?????????恢復指定名字的觸發器
??-x, --no-privileges ?????????跳過處理權限的恢復 (grant/revoke)
??-1, --single-transaction ????作為單個事務恢復
??--disable-triggers ??????????在只恢復數據的過程中禁用觸發器
??--enable-row-security ???????啟用行安全性
??--if-exists ?????????????當刪除對象時使用IF EXISTS
??--no-data-for-failed-tables ?對那些無法創建的表不進行
???????????????????????????????數據恢復
??--no-publications ???????????do not restore publications
??--no-security-labels ????????不恢復安全標簽信息
??--no-subscriptions ??????????do not restore subscriptions
??--no-tablespaces ????????????不恢復表空間的分配信息
??--section=SECTION ???????????恢復命名節 (數據前、數據及數據后)
??--strict-names ??????????????要求每個表和/或schema包括模式以匹配至少一個實體
??--use-set-session-authorization
???????????????????????????????使用 SESSION AUTHORIZATION 命令代替
????????????????ALTER OWNER 命令來設置所有權
?
聯接選項:
??-h, --host=主機名 ???????數據庫服務器的主機名或套接字目錄
??-p, --port=端口號 ???????數據庫服務器的端口號
??-U, --username=名字 ?????以指定的數據庫用戶聯接
??-w, --no-password ???????永遠不提示輸入口令
??-W, --password ??????????強制口令提示 (自動)
??--role=ROLENAME ?????????在恢復前執行SET ROLE操作
?
The options -I, -n, -N, -P, -t, -T, and --section can be combined and specified
multiple times to select multiple objects.
?
如果沒有提供輸入文件名, 則使用標準輸入
常用示例
pg_restore的語法與pg_dump的語法基本一致,只不過是兩個的功能剛好相反
?
恢復備份文件database.backup到指定庫
pg_dump -h ip -p port -U username -d database -f “XXX/database.backup”
二、psql命令
使用psql 登錄數據庫,可以通過psql命令來對數據庫進行操作,比如獲取必要的資訊信息。
語法
psql登錄數據庫后,執行 \? 即可查看
常用示例
查看數據庫列表
\l
注意:\指定后加上 “+” 能顯示更詳細的信息,如\l+
查看數據庫用戶
\du
查看表列表
\dt
三、show語法
語法
登錄數據庫后使用\h show即可看到show語法
postgres=# \h show
命令: ??????SHOW
描述: ??????顯示運行期的參數值
語法:
SHOW 名稱
SHOW ALL
?
show的作用是可以在數據庫中查看當前運行參數的值(postgresql.conf配置文件中的參數)
?
常用示例
查看監聽配置(listen_addresses)
show listen_addresses;
查看端口號配置
show ?port;
當然,在這里提一下,想查看當前登錄用戶和數據庫,可以通過select current_user和select current_database()查看。
?
?
?
總結
以上是生活随笔為你收集整理的PostgreSQL入门之基本工具+常用psql命令+show语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字滤波器matlab仿真_模拟IC笔记
- 下一篇: 知领·报告 | 车路协同技术发展态势分析