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 环 境
|