### 輸入
psql?接受許多命令行參數,一套豐富的后期命令(meta-commands)集,以及完整的?Postgres?所支持的?SQL?語言.最常用的命令行參數是:*dbname*要訪問的數據庫名稱.*dbname*?缺省時是?USER?環境變量的值或(如果沒有設置環境變量)當前用戶的 Unix 帳戶名.-c?*query*要運行的單個查詢.psql?將在結束時退出.命令行參數和后期命令(meta-commands)的全集將在下面的章節中介紹.
有一些環境變量可以用于取代命令行參數.另外,psql?應用使用的Postgres?前端庫還尋找其他的一些變量用于配置,例如,日期/時間格式和本地時區.請參考?*PostgreSQL 程序員手冊*里的有關?libpq?的章節獲取更多信息.
你可以通過設置下面任何一個環境變量來避免使用命令行選項:
PGHOST數據庫服務器的?DNS?主機名.將?PGHOST?設置成一個非零長的字符串將導致?TCP/IP?通訊的使用,而不是使用本地的 Unix 主控套接字.PGPORTPostgres?服務器正在偵聽的端口號.缺省是5432.PGTTY從客戶端支持庫中用于顯示信息的目的控制臺.不是必須的.PGOPTION如果聲明了?PGOPTION?,則其包含的選項將在任何命令行選項?*之前*?分析.PGREALMPGREALM?只是在使用了Kerberos?認證的時候使用.如果設置了這個環境變量,Postgres將試圖與服務器在此范圍內進行認證,并且將使用各自的識別文件(ticket files)來避免與本地識別文件沖突.請參考?*PostgreSQL 管理員手冊*獲取關于Kerberos?的附加的信息.
### 輸出
psql?在成功完成所有查詢后向 shell 中返回0,錯誤時返回 1,與后端的聯接中斷時返回 2.缺省的 TAB 分隔符將被使用.不管任何原因psql?與后端的數據庫聯接失敗后都將返回 1.
### 描述
psql?是一個字符界面的?Postgres?前端.它允許你交互的輸入查詢,將它們提交給?Postgres, 然后閱讀查詢結果.
psql?是一個?Postgres?客戶端應用.因此,在?psql?運行之前必須有一個?postmaster?進程在數據庫服務器上運行.另外,必須象下面描述的那樣聲明數據庫服務器的正確標識參數,比如?postmaster?主機名等.
當psql?啟動時,它先后從?/etc/psqlrc?和?$(HOME)/.psqlrc 中讀取SQL 命令,這樣就允許使用 SQL 象?**SET**?這樣的命令在每個會話開始的時候來設置日期風格.
### 與一個數據庫聯接
psql?試圖與在命令行上聲明了的主機和端口號上運行的數據庫相聯.如果因任何原因導致聯接失敗 (比如,權限不夠,postmaster 沒有在服務器上運行等).psql?將返回一條信息如下
~~~
Connection to database failed.
~~~
聯接失敗的原因沒有說明.
### 輸入查詢
通常狀況下,psql?提供一個帶有?psql?正在與之聯接的接數據庫名的,后綴 "=>" 的提示符.例如.
~~~
$ psql testdbWelcome to the POSTGRESQL interactive sql monitor:? Please read the file COPYRIGHT for copyright terms of POSTGRESQL?? type \e? for help on slash commands?? type \eq to quit?? type \eg or terminate with semicolon to execute query?You are currently connected to the database: testdbtestdb=>
~~~
用戶可以在這個提示符下鍵入?SQL?查詢.除非設置了 -S 選項,輸入的行將在查詢終止分號出現時送到后端.
當查詢正在進行時,psql?同樣還輪詢由?**LISTEN**?和?**NOTIFY**生成的異步通知信號**.**
psql?可以在管道序列里面使用,并且將自動檢測何時它沒有與一個真的控制臺偵聽或交談.
### 命令行選項
psql?可接受下面的命令行選項:-A當打印輸出表元素時關閉填充對齊.-c?*query*聲明?psql?將執行一條查詢字串,*query,*然后退出.這一點對shell 腳本很有用,尤其是在 shell 腳本里與-q?選項相聯時.-d?*dbname*聲明要聯接的數據庫名.等效于將?*dbname*?作為命令行最后一個域輸出.-e回現送給后端的查詢-f?*filename*使用?*filename*?作為查詢的語句源而不是交互式讀入查詢,該文件必須為客戶前端可見.-F?*separator*使用?*separator*?作為域分隔符.缺省是一個 ASCII 豎直條 ("|").-h?*hostname*聲明正在運行?postmaster?的主機名.如果沒有此選項,將使用本地的Unix主控套接字進行通訊.-H打開?HTML 3.0?格式輸出.-l列出所有可用的數據庫,然后退出.其他非連接選項將被忽略.-n不使用用于輸入行編輯和命令歷史的行輸入庫.-o?*filename*將所有輸出定向到文件?*filename.*路徑必須是客戶端可寫的.-p?*port*聲明被?postmaster?用于偵聽的 TCP/IP 端口或使用的缺省本地Unix主控套接字文件句柄.缺省的是環境變量?PGPORT?的值(如果存在的話)或者是5432.-q聲明?psql?將"安靜地"執行處理任務.缺省時psql將打印歡迎和退出信息,并且提示輸入每個查詢和打印輸出查詢返回的行數.如果使用了此選項,這些都不出現.這在和?-c選項一起使用時很有效.-s進入單步模式運行,這時每個查詢在發往后端之前都要提示用戶.-S進入單行運行模式,這時每個查詢都將由換行符結束,而不是分號.-t關閉打印列/字段名.這在shell腳本中與?-c?選項一起使用時有用.-T?*table_options*允許你使用?HTML 3.0?格式輸出時聲明放在表?table ...?中的標記選項.例如,border將給你的表邊框.這個選項必須與?-H?選項一起使用.-u在和數據庫聯接之前詢問用戶的用戶名和口令.如果數據庫不需要口令認證則這些將被忽略.如果此選項沒有使用(而且沒有設置 PGPASSWORD 環境變量)而數據庫又需要口令認證,則聯接失敗.用戶名將被忽略.-x打開擴展行格式模式.當此選項有效時每一行都將把列/字段名打印在左邊而把列/字段值放在右邊.這對于那些難以在一行輸出的超長行特別有用.HTML 行輸出也支持此模式.你可以通過設置環境變量來避免在命令行上鍵入這些參數,參閱下面環境變量的部分.
### psql?后期命令
你在?psql?里輸入的任何以脫字符反斜杠('\')開頭的東西都是psql后期命令.其他的都是?SQL?并且只是簡單的進入當前的查詢緩沖 (并且一旦你已經有了一個完整的查詢,該查詢將自動提交給后端).psql?后期命令也叫斜杠命令.
一個?psql?命令的格式是反斜杠后面緊跟一個命令動詞,然后是任意參數.參數與命令動詞和其他參數以任意個空白字符間隔.
由于歷史原因,對于單字符的命令動詞,你實際上不需要用空白字符將命令動詞和參數分隔開.不過你最好還是加上空白字符.
下列后期命令是已定義的.
\a在打印表元素時切換字段對齊模式(開或關).\C?*caption*將 HTML3.0 表標題設為 “*caption*”.\connect?*dbname*?[?*username*?]與一個新的數據庫建立一個聯接,如果沒有聲明?*username*?則使用缺省值.前面的聯接將關閉.\copy?*dbname*?{ FROM | TO }?*filename*執行前端(客戶端)拷貝.這是一個運行 SQL COPY 命令的操作,不同的是 SQL COPY 是后端在讀寫聲明的文件,并且對應的需要后端訪問和特殊的用戶權限,而在此命令中?psql?讀寫文件并將數據從后端中取出或寫入.將使用缺省的分隔符.
> ?
> **小技巧:**此操作不象?SQL?**COPY**?命令這樣高效,因為所有數據必須通過(客戶/服務器))client/server IP 或套接字聯接.對于大數據量的操作,另一種方法(SQL COPY)更可行.
\d?[?*table*?]列出數據庫中的表,或(如果聲明了)表?*table*?的列/字段.如果表名是用統配符 (“*”)聲明的,列出所有表和表的列/字段信息.\da列出所有可用聚集.\dd?*object*列出?pg_description?里對聲明的對象的描述,對象可以是一個表,表中的列/字段,類型,操作符或聚集.**小技巧:**
> 并非所有對象在
?pg_description?
> 里有描述.此后期命令在快速獲取?
Postgres
> 內部特性時很有用.
\df列出函數.\di只列出索引.\do只列出操作符.\ds只列出序列.\dS列出系統表和索引.\dt只列出非系統表.\dT列出類型.\e?[?*filename*?]編輯當前查詢緩沖或文件?*filename?*的內容.\E?[?*filename*?]編輯當前查詢緩沖或文件?*filename?*的內容并且在編輯結束后執行之.\f?[?*separator*?]設置域分隔符.缺省是單個空白.\g?[ {?*filename*?|?|*command*?} ]將當前查詢輸入緩沖送給后端并且(可選的)將輸出放到?*filename*?或通過管道將輸出送給一個分離的Unix shell 用以執行?*command.*\h?[?*command*?]給出聲明的 SQL 命令的語法幫助.如果?*command*?不是一個定義的 SQL 命令(或在?psql?里沒有文檔),或沒有聲明?*command*?,這時?psql將列出可獲得幫助的所有命令的列表.如果命令?*command*?是一個通配符(“*”),則給出所有 SQL 命令的語法幫助.\H切換?HTML3?輸出.等效于?-H?命令行選項.\i?*filename*從文件?*filename*?中讀取查詢到輸入緩沖.\l列出服務器上所有數據庫.\m切換老式監視器樣的表輸出,這時表周圍有邊界字符包圍著.這是標準 SQL 輸出.缺省時,psql?只包括列/字段間的分隔符.\o?[ {?*filename*?|?|*command*?} ]將后面的查詢結果輸出到文件?*filename*?或通過管道將后面結果輸出到一個獨立的Unix shell 里執行?*command.*如果沒有聲明參數,將查詢結果輸出到?stdout.\p打印當前查詢緩沖區.\q退出?psql?程序.\r重置(清空)查詢緩沖區.\s?[?*filename*?]將命令行歷史打印出或是存放到?*filename.*如果省略?*filename*?,將不會把后繼的命令存放到歷史文件中.此選項只有在?psql?配置成使用輸入行時才有效.\t切換輸出的列/字段名的信息頭和行記數腳注(缺省是開).\T?*table_options*允許你在使用HTML 3.0?格式輸出時聲明放在表?table ...?中的標記選項.例如,border?將給你的表以邊框.這必須和?**\H**?后期命令一起使用.\x切換擴展行格式.當打開時,每一行將在左邊打印列/字段名而在右邊打印列/字段值.這對于那些不能在一行輸出的超長行是很有用的.HTML?行輸出模式也支持這個標記.\w?*filename*將當前查詢緩沖區輸出到文件?*filename.*\z生成一個帶有正確 ACL(賦予/禁止 權限)的數據庫中所有表的輸出列表.\!?[?*command*?]回到一個獨立的Unix shell或執行一個Unix 命令?*command.*\?獲得關于反斜杠 (“\”) 命令的幫助.
- 數據表
- 模式Schema
- 表的繼承和分區
- 常用數據類型
- 函數和操作符-一
- 函數和操作符-二
- 函數和操作符-三
- 索引
- 事物隔離
- 性能提升技巧
- 服務器配置
- 角色和權限
- 數據庫管理
- 數據庫維護
- 系統表
- 系統視圖
- SQL語言函數
- PL-pgSQL過程語言
- PostgreSQL 序列(SEQUENCE)
- PostgreSQL的時間-日期函數使用
- PostgreSQL 查看數據庫,索引,表,表空間大小
- 用以查詢某表的詳細 包含表字段的注釋信息
- PostgreSQL 系統表查看系統信息
- postgre存儲過程簡單實用方法
- PostgreSQL實用日常維護SQL
- PostgreSQL的時間函數使用整理
- 命令
- pg_ctl控制服務器
- initdb 初始化數據庫簇
- createdb創建數據庫
- dropdb 刪除數據庫
- createuser創建用戶
- dropuser 刪除用戶
- psql交互式工具
- psql命令手冊
- pg_dump 數據庫轉儲
- pg_restore恢復數據庫
- vacuumdb 清理優化數據庫
- reindexdb 數據庫重創索引
- createlang 安裝過程語言
- droplang 刪除過程語言
- pg_upgrade 升級數據庫簇
- 調試存儲過程
- 客戶端命令-一
- 客戶端命令-二
- 使用技巧
- PostgreSQL刪除重復數據
- postgresql 小技巧
- PostgreSQL的10進制與16進制互轉
- PostgreSQL的漢字轉拼音
- Postgres重復數據的更新一例
- PostgreSQL使用with一例
- PostgreSQL在函數內返回returning
- PostgreSQL中的group_concat使用
- PostgreSQL數據庫切割和組合字段函數
- postgresql重復數據的刪除
- PostgreSQL的遞歸查詢(with recursive)
- PostgreSQL函數如何返回數據集
- PostgreSQL分區表(Table Partitioning)應用 - David_Tang - 博客園
- PostgreSQL: function 返回結果集多列和單列的例子
- 利用pgAgent創建定時任務
- 淺談 PostgreSQL 類型轉換類似Oracle
- postgresql在windows(包括win7)下的安裝配置
- PostgreSQL簡介、安裝、用戶管理、啟動關閉、創建刪除數據庫 (2010-11-08 12-52-51)轉載▼標簽: 雜談分類: PostgreSQL
- PostgreSQL的generate_series函數應用
- PostgreSQL 8.3.1 全文檢索(Full Text Search)
- postgresql record 使用
- 備份恢復
- PostgreSQL基于時間點恢復(PITR)
- Postgresql基于時間點恢復PITR案例(二)
- Postgres邏輯備份腳本
- Postgres invalid command \N數據恢復處理