NAME
psql - PostgreSQL 交 互 終 端
SYNOPSIS
psql [option...] [dbname [username]]
DESCRIPTION 描 述
psql 是 一 個 以 終 端 爲 基 礎 的 PostgreSQL 前 端 。 它 允 許 你 交 互 地 鍵 入 查 詢 , 把 它 們 發 出 給 PostgreSQL, 然 後 看 看 查 詢 的 結 果 。 另 外 , 輸 入 可 以 來 自 一 個 文 件 。 還 有 , 它 提 供 了 一 些 元 命 令 和 多 種 類 shell 地 特 性 來 實 現 書 寫 腳 本 以 及 對 大 量 任 務 的 自 動 化 。
OPTIONS 選 項
-a |
--echo-all 在 讀 取 行 時 向 屏 幕 打 印 所 有 內 容 。 這 個 選 項 在 腳 本 處 理 時 比 交 互 模 式 時 更 有 用 。 這 個 選 項 等 效 於 設 置 變 量 ECHO 爲 all。
-A |
--no-align 切
換 爲 非 對 齊 輸
出 模 式 。 ( 缺
省 輸 出 模 式 是
對 齊 的 。 )
-ccommand
--commandcommand 聲 明 psql 將
執 行 一 條 查 詢
字 串 , command, 然 後
退 出 。 這 一 點
在 shell 腳 本 里 很 有
用 。 command 必 須 是
一 條 完 全 可 以
被 服 務 器 分 析
的 查 詢 字 串 (
也 就 是 說 , 它
不 包 含 psql特 有 的
特 性 ) , 或 者
是 一 個 反 斜 槓
命 令 。 這 樣 你
就 不 會 混 合 SQL 和
psql 元 命 令 。 要 想
混 合 使 用 , 你
可 以 把 字 串 定
向 到 psql 裏 , 象
這 樣 : echo "\x\ select * from
foo;" | psql。 如 果 命
令 字 串 包 含 多
個 SQL 命 令 , 那 麼
他 們 在 一 個 事
務 裏 處 理 , 除
非 在 字 串 裏 包
含 了 明 確 的 BEGIN/COMMIT
命 令 把 他 們 分
成 多 個 事 務 。
這 個 和 從 psql 的 標
準 輸 入 裏 給 它
填 充 相 同 字 串
不 同 。
-ddbname
--dbnamedbname 聲 明 想
要 聯 接 的 數 據
庫 名 稱 。 等 效
於 在 命 令 行 行
上 把 dbname 聲 明 爲 第
一 個 非 選 項 參
數 。
-e |
--echo-queries 顯 示 所 由 發 送 給 服 務 器 的 查 詢 。 等 效 於 把 變 量 ECHO 設 置 爲 queries。
-E |
--echo-hidden 回
顯 由 \d 和 其 他
反 斜 槓 命 令 生
成 的 實 際 查 詢
。 如 果 你 希 望
在 你 自 己 的 程
序 裏 包 含 類 似
的 功 能 , 你 就
可 以 使 用 這 個
選 項 。 這 等 效
於 在 psql裏 設 置 變
量 ECHO_HIDDEN。
-ffilename
--filefilename 使 用 filename作
爲 命 令 的 語 句
源 而 不 是 交 互
式 讀 入 查 詢 。
在 處 理 完 文 件
後 , psql 結 束 。 這
個 選 項 在 很 多
方 面 等 效 於 內
部 命 令 \i。 如
果 filename 是 - ( 連
字 符 ) , 則 從
標 準 輸 入 讀 取
。 使 用 這 個 選
項 與 用 psql < filename 有
微 小 的 區 別 。
通 常 , 兩 者 都
回 按 照 你 預 期
那 樣 運 行 , 但
是 使 用 -f打 開 了
一 些 很 好 的 特
性 , 比 如 帶 行
號 的 錯 誤 信 息
。 而 且 , 使 用
這 個 選 項 還 有
可 能 有 減 小 啓
動 負 荷 的 機 會
。 另 一 方 面 ,
如 果 你 把 所 有
內 容 手 工 輸 入
, 使 用 shell 輸 入 定
向 的 方 式 ( 理
論 上 ) 能 保 證
生 成 和 你 已 經
得 到 的 完 全 一
樣 的 輸 出 ( 譯
註 : 重 複 運 行
命 令 ) 。
-Fseparator
--field-separatorseparator 使 用
separator 作 爲 域 分 隔
符 。 等 效 於 \pset
fieldsep 或 \f。
-hhostname
--hosthostname 聲 明 正
在 運 行 服 務 器
的 主 機 名 。 如
果 主 機 名 以 斜
扛 開 頭 , 則 它
被 用 做 到 Unix 域 套
接 字 的 路 徑 。
-H |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--html 打 開 |
HTML格 式 輸 出 。 等 效 於 \pset format html 或 \H 命 令 。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-l 所 有 可 用 的 數 據 庫 , 然 後 退 出 。 其 他 非 聯 接 選 項 將 被 忽 略 。 類 似 於 內 部 命 令 \list。 -ofilename
--portport
聲 明 被 服 務 器
偵 聽 的 TCP 端 口 或
使 用 的 缺 省 本
地 Unix 主 控 套 接 字
文 件 句 柄 。 缺
省 的 是 環 境 變
量 PGPORT的 值 , 如 果
沒 有 設 置 的 話
是 編 譯 是 聲 明
的 端 口 , 通 常
是 5432。
--quiet 聲
明 psql 將 安 靜 地 執
行 處 理 任 務 。
缺 省 時 psql將 打 印
歡 迎 和 許 多 其
他 輸 出 信 息 。
如 果 使 用 了 此
選 項 , 這 些 都
不 出 現 。 這 在
和 -c 選 項 一 起 使
用 時 很 有 效 。
在 psql 裏 , 你 可 以
通 過 設 置 QUIET 變 量
實 現 同 樣 效 果
。
--single-step 進 入 單 步 模 式 運 行 。 意 味 着 每 個 查 詢 在 發 往 服 務 器 之 前 都 要 提 示 用 戶 , 用 這 個 選 項 也 可 以 取 消 執 行 。 此 選 項 主 要 用 於 調 試 腳 本 。
--single-line 進 入 單 行 運 行 模 式 , 這 時 每 個 命 令 都 將 由 換 行 符 結 束 , 象 分 號 那 樣 。 Note: 注 意 : 注 意 這 個 模 式 是 給 那 些 堅 持 要 這 個 特 性 的 人 的 , 我 們 不 鼓 勵 你 這 麼 用 。 實 際 上 , 如 果 你 在 一 行 裏 混 合 使 用 SQL 和 元 命 令 , 執 行 的 順 序 對 不 熟 練 的 用 戶 而 言 不 總 是 清 晰 的 。
--tuples-only 關
閉 打 印 列 名 稱
和 結 果 行 計 數
腳 註 等 信 息 。
完 全 等 效 於 元
命 令 \t。
這 個 選 項 已 經 廢 棄 了 , 因 爲 它 在 概 念 上 有 漏 洞 。 ( 提 示 輸 入 非 缺 省 用 戶 名 和 提 示 輸 入 服 務 器 要 求 的 口 令 是 完 全 兩 碼 事 。 ) 我 們 鼓 勵 你 用 -U 和 -W 選 項 取 代 。 -Uusername
--version 顯 示 psql版 本 。
--password 要 求 psql 在 與 一 個 數 據 庫 聯 接 前 提 示 輸 入 口 令 。 這 個 選 項 將 在 整 個 會 話 過 程 中 有 效 , 即 使 你 用 元 命 令 \connect 改 變 了 所 聯 接 的 數 據 庫 。 在 當 前 版 本 里 , 如 果 服 務 器 要 求 口 令 認 證 , psql 自 動 提 出 一 個 口 令 提 示 符 。 因 爲 目 前 這 個 特 性 是 以 一 個 “hack”爲 基 礎 , 自 動 識 別 有 可 能 奇 怪 地 失 效 , 因 此 用 這 個 選 項 強 制 一 個 提 示 符 。 如 果 沒 有 聲 明 口 令 提 示 符 而 服 務 器 要 求 口 令 認 證 , 那 麼 聯 接 企 圖 將 失 敗 。
--expanded 打 開 擴 展 表 格 式 模 式 。 等 效 於 \x。
--no-psqlrc 不 讀 取 啓 動 文 件 ~/.psqlrc。
EXIT STATUS 退 出 狀 態如 果 正 常 結 束 , 那 麼 psql 向 shell 返 回 0, 如 果 自 身 發 生 致 命 錯 誤 , 則 返 回 1( 內 存 用 盡 , 未 找 到 文 件 等 ) , 如 果 和 數 據 庫 的 連 接 失 效 而 且 會 話 不 再 活 躍 則 返 回 2, 如 果 腳 本 中 發 生 錯 誤 並 且 設 置 了 ON_ERROR_STOP 則 返 回 3。 USAGE 用 法CONNECTING
TO A DATABASE 與 一 個 數 據
庫 聯 接 ENTERING SQL COMMANDS 輸 入 SQL 命 令 通 常 狀 況 下 , psql 提 供 一 個 帶 有 psql 正 在 與 之 聯 接 的 接 數 據 庫 名 的 , 後 綴 =>的 提 示 符 。 例 如 , $psql
testdb Type:
\copyright for distribution terms testdb=> 用 戶 可 以 在 這 個 提 示 符 下 鍵 入 SQL 查 詢 。 通 常 , 輸 入 的 行 將 在 命 令 終 止 分 號 出 現 時 送 到 服 務 器 。 一 行 的 終 止 並 不 結 束 命 令 ! 因 此 命 令 可 以 因 清 晰 起 見 跨 越 好 幾 行 。 如 果 命 令 發 送 出 去 而 且 沒 有 錯 誤 , 命 令 結 果 會 顯 示 在 屏 幕 上 。 當 命 令 正 在 進 行 時 , psql 同 樣 還 輪 詢 由 LISTEN [listen(7)] 和 NOTIFY [notify(7)] 生 成 的 異 步 通 知 信 號 。 META-COMMANDS 元 命 令 你 在 psql 裏 輸 入 的 任 何 以 不 帶 引 號 的 反 斜 槓 ( ’\’) 開 頭 的 東 西 都 是 psql 元 命 令 , 這 些 命 令 是 由 psql 自 己 處 理 的 。 這 些 命 令 也 是 令 psql 可 用 於 管 理 或 書 寫 腳 本 的 原 因 。 元 命 令 更 常 見 的 叫 法 是 斜 槓 或 反 斜 槓 命 令 。 一 個 psql 命 令 的 格 式 是 反 斜 槓 後 面 緊 跟 一 個 命 令 動 詞 , 然 後 是 任 意 參 數 。 參 數 與 命 令 動 詞 和 其 他 參 數 以 任 意 個 空 白 字 符 間 隔 。 要 在 參 數 裏 面 包 含 空 白 , 你 必 須 用 單 引 號 把 它 包 圍 起 來 。 要 在 這 樣 的 參 數 裏 包 含 單 引 號 , 前 面 加 一 個 反 斜 槓 。 任 何 包 含 在 單 引 號 裏 的 東 西 會 被 進 一 步 進 行 類 C 的 替 換 , 把 \n (new line),\t (tab), \digits, \0digits, 和 \0xdigits ( 給 出 的 十 進 制 , 八 進 制 , 或 十 六 進 制 碼 的 字 符 ) 替 換 掉 。 如 果 一 個 不 帶 引 號 的 參 數 以 冒 號 ( :) 開 頭 , 它 會 被 當 作 一 個 psql 變 量 , 並 且 該 變 量 的 值 會 最 終 成 爲 真 正 的 參 數 值 。 ( 譯 註 : 類 似 ecpg 和 pl/pgsql 的 變 量 用 法 。 ) 用 反 引 號 ( "backticks" ’) 包 圍 的 內 容 被 當 作 一 個 命 令 行 傳 入 shell。 該 命 令 的 輸 出 ( 刪 除 了 結 尾 的 新 行 ) 被 當 作 參 數 值 。 上 面 描 述 的 逃 逸 ( 字 符 ) 序 列 在 反 引 號 裏 也 生 效 。 有 些 命 令 以 一 個 SQL 標 識 的 名 稱 ( 如 , 一 個 表 名 ) 爲 參 數 。 這 些 參 數 遵 循 SQL 語 法 關 於 雙 引 號 的 規 則 : 不 帶 雙 引 號 的 標 識 強 制 成 小 寫 , 而 雙 引 號 保 護 字 母 不 受 大 小 寫 轉 換 , 並 且 允 許 在 標 識 符 中 使 用 空 白 。 在 雙 引 號 中 , 成 對 的 雙 引 號 在 結 果 名 字 中 分 析 成 一 個 雙 引 號 。 比 如 , FOO"BAR"BAZ 解 析 成 fooBARbaz, 而 "A weird"" name" 變 成 A weird" name。 name. 對 參 數 的 分 析 在 碰 到 另 一 個 不 帶 引 號 的 反 斜 槓 時 停 止 。 這 裏 會 認 爲 是 一 個 新 的 元 命 令 的 開 始 。 特 殊 序 列 \\ ( 雙 反 斜 槓 ) 標 識 參 數 的 結 尾 並 將 繼 續 分 析 後 面 的 SQL 命 令 ( 如 果 存 在 的 話 ) 。 這 樣 SQL 和 psql命 令 可 以 自 由 的 在 一 行 裏 面 混 合 。 但 是 在 任 何 情 況 下 , 一 條 元 命 令 的 參 數 不 能 延 續 超 過 行 尾 。 下 列 元 命 令 是 已 定 義 的 :
\pset 獲 取
一 個 通 用 的 解
決 方 法 。 Tip: 提 示 : 要 打 印 出 你 的 當 前 工 作 目 錄 , 使 用 \!pwd. \C [title
] 把 正 在 打 印
的 表 的 標 題 設
置 爲 一 個 查 詢
的 結 果 或 者 取
消 這 樣 的 設 置
。 這 條 命 令 等
效 於 \pset titletitle. ( 這
條 命 令 的 名 稱
源 於 "caption", 因
爲 以 前 只 是 用
於 在 一 個 HTML 表 裏
面 設 置 標 題 。
) Tip: 提 示 : 此 操 作 不 象 SQL COPY 命 令 這 樣 高 效 , 因 爲 所 有 數 據 必 須 通 過 客 戶 端 /服 務 器 聯 接 。 對 於 大 數 據 量 的 操 作 , 另 一 種 方 法 更 可 行 。 Note: 注 意 : 注 意 在 客 戶 端 和 服 務 器 拷 貝 時 對 stdin 和 stdout 的 解 釋 的 區 別 : 在 前 端 拷 貝 時 , 這 些 總 是 指 psql的 輸 入 和 輸 出 流 。 在 服 務 器 拷 貝 時 stdin 來 自 COPY 本 身 的 標 準 輸 入 ( 比 如 , 一 個 帶 有 -f 選 項 的 腳 本 ) , 而 stdout 指 的 是 查 詢 輸 出 流 ( 參 閱 下 面 的 \o 元 命 令 ) 。 \copyright 顯
示 PostgreSQL 的 版 權 和
版 本 信 息 。 Note: 注 意 : 如 果 如 果 不 帶 任 何 pattern調 用 \d , 等 效 於 \dtvs, 將 顯 示 一 個 所 有 表 , 視 圖 和 序 列 的 列 表 。 這 完 全 是 出 於 方 便 的 考 慮 。 \da [pattern
] 列 出 所 有 可
用 聚 集 函 數 ,
以 及 它 們 操 作
的 數 據 類 型 。
如 果 聲 明 瞭 pattern,
那 麼 只 顯 示 匹
配 ( 正 則 表 達
式 ) 的 聚 集 函
數 。
\dd [pattern ] 顯 示 所 有 匹 配 pattern 的 描 述 , 如 果 沒 有 給 出 參 數 , 顯 示 所 有 可 視 對 象 。 但 是 不 管 怎 樣 , 只 有 那 些 有 描 述 內 容 的 對 象 才 顯 示 出 來 。 ( "對 象 "包 括 聚 集 , 函 數 , 操 作 符 , 類 型 , 關 係 ( 表 , 視 圖 , 索 引 , 序 列 , 大 對 象 ) , 規 則 和 觸 發 器 。 ) 例 如 : =>\dd
version \dD [pattern
] 列 出 所 有 可
用 域 。 如 果 聲
明 瞭 pattern, 那 麼 只
顯 示 匹 配 的 域
。 Note: 注 意 : 爲 了 減 少 混 亂 , \df 並 不 顯 示 數 據 類 型 的 I/O 函 數 。 這 樣 是 通 過 忽 略 那 些 接 受 或 者 返 回 類 型 cstring 的 函 數 實 現 的 。 \distvS [pattern ] 這 不 是 一 個 實 際 上 的 命 令 名 稱 : 字 母 i, s, t, v, S 分 別 代 表 索 引 ( index) , 序 列 ( sequence) , 表 ( table) , 視 圖 ( view) 和 系 統 表 ( system table) 。 你 可 以 以 任 意 順 序 聲 明 任 意 或 者 所 有 這 些 字 母 獲 得 這 些 對 象 的 一 個 列 表 。 字 幕 S 把 列 表 限 制 於 系 統 對 象 ; 如 果 沒 有 S, 則 只 顯 示 非 系 統 對 象 。 如 果 在 命 令 名 上 附 加 了 +, 那 麼 還 會 列 出 和 每 個 對 象 相 關 聯 的 描 述 , 如 果 有 的 話 。 如 果 聲 明 瞭 pattern, 那 麼 只 列 出 匹 配 模 式 的 對 象 。
\dn [pattern
] 列 出 所 有 可
用 模 式 ( 名 字
空 間 ) 。 如 果
聲 明 瞭 pattern ( 一
個 正 則 表 達 式
) , 那 麼 只 列
出 匹 配 模 式 的
模 式 名 。 Tip: 提 示 : psql 搜 索 環 境 變 量 PSQL_EDITOR, EDITOR 和 VISUAL( 以 此 順 序 ) 查 找 要 用 到 哪 個 編 輯 器 。 如 果 上 面 的 都 沒 有 設 置 , 使 用 /bin/vi。 \echotext [ ... ] 向 標 準 輸 出 打 印 參 數 , 用 一 個 空 格 分 隔 並 且 最 後 跟 着 一 個 新 行 。 這 個 特 性 在 顯 示 腳 本 的 輸 出 時 會 有 用 。 例 如 : =>\echo
’date’ Tip: 提 示 : 如 果 你 使 用 \o 命 令 重 定 向 你 的 查 詢 的 輸 出 , 你 可 能 會 用 \qecho 取 代 這 條 命 令 。 \encoding
[encoding ] 設 置 客
戶 端 字 符 編 碼
方 式 。 不 帶 參
數 時 , 這 條 命
令 顯 示 當 前 的
編 碼 方 式 。 Note: 注 意 : 爲 簡 化 敲 擊 , 包 含 多 個 單 字 的 命 令 不 需 要 引 用 。 因 此 鍵 入 \help alter table 是 正 確 的 。
對 齊 的 文 本 格 式 。 這 個 命 令 是 爲 了 兼 容 和 方 便 , 參 閱 \pset 獲 取 設 置 其 他 輸 出 選 項 的 內 容 。 \ifilename 從 文 件 filename中 讀 取 並 把 其 內 容 當 作 從 鍵 盤 輸 入 的 那 樣 執 行 查 詢 。 Note: 注 意 : 如 果 你 想 在 屏 幕 上 看 到 讀 入 的 行 , 你 必 須 對 所 有 行 設 置 變 量 ECHO 爲 all。 \l (or\list) 列
出 服 務 器 上 所
有 數 據 庫 的 名
字 和 它 們 的 所
有 者 以 及 字 符
集 編 碼 。 在 命
令 名 稱 後 面 加
一 個 "+" 還 可 以
看 到 對 數 據 庫
的 描 述 。 Tip: 提 示 : 使 用 \lo_list 查 看 大 對 象 的 OID。 OID. \lo_importfilename [comment ] 把 文 件 存 儲 爲 一 個 PostgreSQL 大 對 象 。 可 以 帶 着 一 個 該 對 象 的 註 解 選 項 。 例 如 : foo=>\lo_import
’/home/peter/pictures/photo.xcf’ ’a
picture of me’ \lo_list 顯
示 一 個 目 前 存
儲 在 該 數 據 庫
裏 的 所 有 PostgreSQL 大
對 象 和 它 們 的
所 有 者 的 列 表
。 Tip: 提 示 : 使 用 \lo_list 查 找 大 對 象 的 OID。 OID. \o [ {filename | |command} ] 把 後 面 的 查 詢 結 果 保 存 到 文 件 filename 裏 或 者 把 後 面 的 查 詢 結 果 定 向 到 一 個 獨 立 的 Unix shell 執 行 command。 如 果 沒 有 聲 明 參 數 , 查 詢 輸 出 重 置 爲 標 準 輸 出 。 "查 詢 結 果 "包 括 所 有 表 , 命 令 響 應 和 從 數 據 庫 服 務 器 來 的 提 示 , 同 樣 還 有 各 種 各 樣 查 詢 數 據 庫 的 反 斜 槓 命 令 的 輸 出 ( 如 \d) , 但 是 沒 有 錯 誤 信 息 。 Tip: 提 示 : 要 用 文 本 分 散 查 詢 結 果 之 間 的 輸 出 , 用 \qecho。
\psetparameter [value ] 這 條 命 令 設 置 影 響 查 詢 結 果 表 輸 出 的 選 項 。 parameter 描 述 要 設 置 的 選 項 是 哪 一 個 。 value 的 語 意 也 取 決 於 它 。 可 調 節 的 打 印 選 項 有 :
一 。 允 許 使 用 唯 一 的 縮 寫 。 ( 這 也 意 味 着 一 個 字 母 就 夠 了 。 ) "Unaligned" ( 不 對 齊 ) 把 一 條 記 錄 的 所 有 字 段 都 輸 出 到 一 行 , 用 當 前 有 效 的 域 分 隔 符 分 隔 。 這 主 要 用 於 生 成 那 些 要 被 其 他 程 序 讀 取 的 輸 出 ( tab分 隔 , 逗 號 分 隔 ) 。 "Aligned" ( 對 齊 ) 模 式 是 標 準 的 , 人 類 可 讀 的 , 格 式 化 好 了 的 文 本 輸 出 , 也 是 缺 省 。 "HTML" 和 "LaTeX" 模 式 把 表 輸 出 爲 可 用 於 文 檔 裏 的 對 應 標 記 語 言 。 它 們 還 不 是 完 整 的 文 檔 ! ( 可 能 對 於 HTML 變 化 還 不 是 太 大 , 但 是 在 LaTeX 裏 , 你 必 須 有 一 個 完 整 的 文 檔 包 裝 器 。 )
HTML模 式 裏
, 這 個 參 數 會
直 接 翻 譯 成
border=...屬 性 , 在 其
他 的 模 式 裏 ,
只 有 值 0 ( 無 邊
界 ) , 1 ( 內 部
分 隔 線 ) 和 2 (
表 框 架 ) 有 意
義 。
出 。 缺 省 是 什 麼 都 不 打 , 這 樣 很 容 易 和 類 似 一 個 空 字 串 混 淆 。 因 此 , 我 們 可 能 選 擇 \pset null ’(null)’。 fieldsep 聲 明 在 非 對 齊 模 式 時 的 域 分 隔 符 。 這 樣 我 們 就 可 以 創 建 其 他 程 序 希 望 的 tab或 逗 號 分 隔 的 輸 出 。 要 設 置 tab 域 分 隔 符 , 鍵 入 \pset fieldsep ’’。 缺 省 域 分 隔 符 是 ’|’ ( 一 個 豎 條 符 號 ) 。
recordsep 聲
明 在 非 對 齊 模
式 時 的 記 錄 分
隔 符 。 缺 省 是
換 行 符 。
PAGER, 輸 出 被 定 向 到 指 定 程 序 , 否 則 使 用 系 統 缺 省 ( 比 如 more) 。 如 果 關 閉 了 分 頁 器 , 則 不 使 用 它 , 如 果 打 開 了 , 程 序 只 在 需 要 的 時 候 使 用 分 頁 器 , 也 就 是 說 , 輸 出 是 到 終 端 , 而 且 那 個 表 很 可 能 無 法 與 屏 幕 匹 配 。 ( psql 在 決 定 何 時 分 頁 時 不 是 很 完 美 。 ) \pset pager 開 關 分 頁 器 。 我 們 也 可 以 把 分 頁 器 設 置 爲 always, 導 致 我 們 在 任 何 情 況 下 都 使 用 分 頁 器 。 可 以 在 "Examples 例 子 " 節 看 到 這 些 不 同 格 式 輸 出 的 示 例 。 Tip: 提 示 : 有 很 多 用 於 \pset 的 快 速 命 令 。 參 閱 \a,\C,\H, \t,\T, 和 \x。 Note: 注 意 : 無 參 數 運 行 \pset 是 錯 誤 的 。 以 後 這 樣 調 用 將 顯 示 當 前 打 印 選 項 狀 態 。
\qechotext [ ... ] 這 條 命 令 等 效 於 \echo , 區 別 是 所 有 輸 出 將 寫 入 由 \o 設 置 的 輸 出 通 道 。
\s [filename ] 將 命 令 行 歷 史 打 印 出 或 是 存 放 到 filename。 如 果 省 略 filename, 歷 史 將 輸 出 到 標 準 輸 出 。 這 個 選 項 只 有 在 psql 配 置 成 使 用 GNU 歷 史 庫 後 才 生 效 。 Note: 注 意 : 在 當 前 版 本 里 , 這 個 ( GNU 歷 史 庫 ) 不 再 是 必 須 的 了 , 實 際 上 , 在 程 序 結 束 時 自 動 保 存 命 令 行 歷 史 。 每 次 psql 啓 動 都 會 裝 載 命 令 行 歷 史 。 \set [name [value [ ... ]]] 設 置 內 部 變 量 name 爲 value 或 着 如 果 給 出 了 多 於 一 個 值 , 設 置 爲 所 有 這 些 值 的 聯 接 結 果 。 如 果 沒 有 給 出 第 二 個 參 數 , 只 設 變 量 不 設 值 。 要 重 置 一 個 變 量 , 使 用 \unset 命 令 。 有 效 的 變 量 名 可 以 包 含 字 符 , 數 字 和 下 劃 線 。 參 閱 下 面 的 "Variables 變 量 " 獲 取 細 節 。 儘 管 你 可 以 設 置 任 何 變 量 爲 任 意 值 , psql對 一 些 變 量 特 殊 對 待 。 它 們 在 關 於 變 量 的 節 裏 面 有 文 檔 。 Note: 注 意 : 這 條 命 令 是 完 全 和 SQL 命 令 SET [set(7)] 不 一 樣 的 。
tuples_only, 提 供 主 要 爲 了 方 便 。 \Ttable_options
允 許 你 在 使 用
HTML輸 出 模 式 時 聲
明 放 在 table 標 記 裏
的 屬 性 。 這 條
命 令 等 效 於 \pset tableattr
table_options。
\z [pattern
] 生 成 一 個 帶
有 訪 問 權 限 列
表 的 數 據 庫 中
所 有 表 的 列 表
。 如 果 給 出 任
何 pattern, 則 被 當 成
一 個 規 則 表 達
式 , 只 顯 示 匹
配 的 表 。 命 令
grant(7) 和 revoke(7) 用 於
設 置 訪 問 權 限
。 參 閱 grant(7) 獲 取
更 多 信 息 。 這
是 \dp( "顯 示 權
限 ") 的 別 名 。
\d 命 令 都 接 受 一 個 pattern 參 數 , 聲 明 要 顯 示 的 對 象 名 字 。 * 表 示 "任 何 字 符 序 列 ", 而 ? 表 示 "任 何 單 個 字 符 "。 ( 這 個 表 示 法 和 Unix 的 shell 文 件 名 模 式 兼 容 。 ) 高 級 用 戶 也 可 以 使 用 正 則 表 達 式 表 示 法 , 比 如 字 符 表 , [0-9] 這 樣 的 東 西 來 匹 配 "任 意 數 字 "。 要 讓 任 何 這 些 模 式 匹 配 字 符 可 以 安 字 面 方 式 解 析 , 那 就 應 該 用 雙 引 號 包 圍 它 們 。 一 個 包 含 ( 無 引 號 的 ) 句 點 的 模 式 會 被 解 析 承 一 個 模 式 名 的 模 式 後 面 跟 着 一 個 對 象 名 的 模 式 。 比 如 , \dt foo*.bar* 顯 示 所 有 以 foo 開 頭 的 模 式 裏 的 以 bar 開 頭 的 表 名 字 。 如 果 沒 有 出 現 句 點 , 那 麼 這 個 模 式 只 匹 配 在 當 前 模 式 搜 索 路 徑 中 可 見 的 對 象 。 如 果 完 全 省 略 pattern 參 數 , 那 麼 \d 命 令 顯 示 所 有 在 當 前 模 式 搜 索 路 徑 中 可 見 的 對 象 。 要 查 閱 在 數 據 庫 中 的 所 有 對 象 , 使 用 模 式 *.*。 ADVANCED
FEATURES 高 級 特 性 testdb=>\set foo bar 把 變 量 "foo" 設 置 爲 值 "bar"。 要 檢 索 變 量 的 內 容 , 在 變 量 名 前 面 放 上 冒 號 然 後 把 它 用 在 任 意 斜 槓 命 令 裏 : testdb=>\echo
:foo Note: 注 意 : \set 的 參 數 服 從 和 其 他 命 令 一 樣 的 替 換 規 則 。 因 此 你 可 以 構 造 有 趣 的 引 用 , 象 \set :foo ’something’ 這 樣 , 獲 得 分 別 象 Perl或 PHP那 樣 有 名 的 "軟 連 接 ( soft links) "或 "變 量 變 量 "。 不 幸 的 是 ( 或 者 萬 幸 的 ? ) , 用 這 些 構 造 不 能 做 任 何 有 用 的 事 情 。 另 一 方 面 , \set bar :foo 是 一 個 非 常 有 效 的 拷 貝 變 量 的 方 法 。 如 果 你 不 帶 第 二 個 參 數 調 用 \set, 那 麼 只 是 設 置 這 個 變 量 而 沒 有 值 。 要 重 置 ( 或 刪 除 ) 一 個 變 量 , 使 用 命 令 \unset。 psql
的 內 部 變 量 可
以 包 括 任 意 順
序 , 任 意 數 量
的 字 母 , 數 字
和 下 劃 線 。 有
一 些 常 用 變 量
被 psql 另 眼 相 待 。
它 們 是 一 些 選
項 設 置 , 這 些
選 項 在 運 行 時
可 以 通 過 改 變
變 量 的 值 或 者
改 變 一 些 應 用
的 表 現 狀 態 而
改 變 。 儘 管 你
可 以 把 這 些 變
量 用 於 其 他 用
途 , 但 是 我 們
不 鼓 勵 這 麼 做
, 因 爲 程 序 的
特 性 可 能 會 很
快 變 得 非 常 奇
怪 。 通 常 , 所
有 特 殊 對 待 的
變 量 都 是 由 大
寫 字 母 組 成 (
可 能 還 有 數 字
和 下 劃 線 ) 。
爲 了 保 證 和 未
來 的 最 大 限 度
的 兼 容 性 , 請
避 免 使 用 這 樣
的 變 量 。 下 面
是 一 個 所 有 特
殊 對 待 的 變 量
列 表 。 Note: 注 意 : 在 關 閉 自 動 提 交 的 模 式 下 , 你 必 須 明 確 放 棄 任 何 失 敗 的 事 務 , 方 法 是 執 行 ABORT 或 者 ROLLBACK。 還 要 注 意 如 果 你 不 提 交 就 退 出 會 話 , 你 的 工 作 會 丟 失 。 Note: 注 意 : 自 動 提 交 打 開 方 式 是 PostgreSQL 傳 統 的 行 爲 , 但 是 關 閉 自 動 提 交 更 接 近 SQL 規 範 。 如 果 你 喜 歡 關 閉 自 動 提 交 , 你 應 該 在 你 的 .psqlrc 文 件 裏 設 置 它 。
all, 輸 入
的 或 者 來 自 一
個 腳 本 的 所 有
行 在 分 析 或 執
行 前 都 寫 到 標
準 輸 出 。 要 在
程 序 啓 動 時 聲
明 這 些 , 使 用
-a如 果 設 置 爲
queries, psql 只 是 在 查
詢 發 送 給 服 務
器 之 前 打 印 出
來 。 實 現 這 個
功 能 的 命 令 行
選 項 是 -e。 Note: 注 意 : 這 個 特 性 是 無 恥 地 從 bash 裏 剽 竊 來 的 。 HISTSIZE 存 在 命 令 歷 史 裏 的 命 令 的 個 數 。 缺 省 值 是 500。 Note: 注 意 : 這 個 特 性 是 無 恥 地 從 bash 裏 剽 竊 來 的 。
IGNOREEOF 如 果 刪 除 此 變 量 , 向 一 個 交 互 的 psql會 話 發 送 一 個 EOF ( 通 常 是 Control+D) 將 終 止 應 用 。 如 果 設 置 爲 一 個 數 字 值 , 那 麼 在 應 用 終 止 前 該 數 值 的 EOF 字 符 將 被 忽 略 。 如 果 設 置 了 此 變 量 但 是 沒 有 數 字 值 , 缺 省 是 10。 Note: 注 意 : 這 個 特 性 是 無 恥 地 從 bash 裏 剽 竊 來 的 。 LASTOID 最
後 影 響 的 oid值 ,
即 爲 從 一 條 INSERT 或
lo_insert 命 令 返 回 的
值 。 此 變 量 只
保 證 在 下 一 條 SQL
命 令 的 結 果 顯
示 之 前 有 效 。
PROMPT1
SINGLELINE 這
個 變 量 等 效 於
設 置 命 令 行 選
項 -S。 你 可 以 在
運 行 時 刪 除 或
設 置 它 。
/重 置 。
SQL INTERPOLATION 代 換 一 個 附 加 的 psql 變 量 的 有 用 特 性 是 你 可 以 把 它 們 替 換 ( "代 換 ") 成 正 規 的 SQL 語 句 。 這 樣 做 的 語 法 同 樣 還 是 變 量 名 前 面 加 一 個 冒 號 ( :) 。 testdb=>\set
foo ’my_table’ testdb=>\set
content ’\’’ ’cat my_file.txt’
’\’’ testdb=>\set
content ’\’’ ’sed -e
"s/’/\\\\\\’/g" <
my_file.txt’ ’\’’ 觀
察 正 確 數 量 的
反 斜 槓 ( 6) !
你 可 以 這 樣 解
釋 它 : 在 psql 分 析
完 這 行 後 , 它
把 sed -e "s/’/\\\’/g" <
my_file.txt 傳 遞 給 shell。 shell
將 對 雙 引 號 裏
的 東 西 做 其 處
理 然 後 用 參 數 -e
和 PROMPTING
提 示 符
字 進 行 的 就 是 [local], 或 者 如 果 Unix 域 套 接 字 不 是 編 譯 的 缺 省 位 置 , 就 是 [local:/dir/name]。
Unix 域 套 接 字 , 就 是 [local]。
SET SESSION AUTHORIZATION 命 令 而 改 變 。 )
%/, 但 如 果 數 據 庫 是 你 的 缺 省 數 據 庫 輸 出 是 "~" ( 波 浪 線 ( tilde) ) 。
擴 展 可 能 在 一 個 數 據 庫 會 話 過 程 中 因 爲 SET SESSION AUTHORIZATION 命 令 而 改 變 。 )
數 據 庫 斷 開 ( 如 果
*, 如 果
在 一 個 失 敗 的
事 務 塊 裏 是 !,
或 者 無 法 判 斷
事 務 狀 態 時 爲 ?
( 比 如 , 因 爲
沒 有 連 接 ) 。
psql變 量 name的 值 。 參 閱 "Variables 變 量 " 節 獲 取 細 節 。 %’command’ command的 輸 出 , 類 似 於 通 常 的 反 引 號 ( back-tick) 替 換 。 要 在 提 示 符 裏 插 入 百 分 號 , 鍵 入 %%。 缺 省 提 示 符 等 效 於 ’%/%R%# ’ 用 於 prompts 1 和 2, 以 及 ’>> ’ 用 於 prompt 3。 Note: 注 意 : 這 個 特 性 是 無 恥 地 從 tcsh 裏 剽 竊 來 的 。 COMMAND-LINE
EDITING 命 令 行 編 輯 $if psql ENVIRONMENT 環 境
|