uxsql元命令速查表
uxsql元命令是uxdb客户端uxsql中一类以反斜杠()开头的特殊指令,它们与标准SQL命令有本质区别:其执行主体是psql客户端自身而非数据库服务器,功能上专注于数据库会话管理、对象浏览、输出格式控制和脚本执行等辅助操作,而不涉及数据查询或修改,语法上也不以分号结尾。因此,这些命令常被形象地称为反斜杠命令或斜线命令,是提升psql使用效率的核心工具。
1. 执行和流转
# \g : 执行当前缓冲区(代替末尾分号)。示例:SELECT 1; 换行输入 \g 执行;\g /tmp/out.txt 执行并写入文件
# \gx : 执行并强制竖排显示(宽表神器)。示例:SELECT * FROM huge_table \gx
# \gexec : 执行查询,把结果集的每一行当作新SQL执行。示例:SELECT 'CREATE INDEX idx_' || tablename || ' ON ' || tablename || '(id);' FROM ux_tables; → 末尾 \gexec
# \gset : 执行查询,把第一行结果存为变量。示例:SELECT count(*) as cnt FROM orders \gset → 之后用 :cnt 引用
# \watch : 每隔N秒重复执行当前查询。示例:SELECT now(), count(*) FROM queue; \watch 2
# \e : 用外部编辑器(vim/notepad)改当前SQL。示例:\e 打开编辑器改内容,保存退出后自动执行;\e my.sql 编辑指定文件
# \ef : 编辑函数源码。示例:\ef ux_sleep
# \ev : 编辑视图定义。示例:\ev my_view
# \p : 打印当前查询缓冲区内容。示例:\p
# \r : 清空查询缓冲区。示例:\r
# \s : 查看/保存历史命令。示例:\s(显示历史);\s /tmp/history.sql(保存历史)
# \w : 将缓冲区内容写入文件。示例:\w /tmp/query.sql
# \q : 退出客户端。示例:\q
2. 输入和输出
# ===== 输入 & 输出重定向 =====
# \i : 执行外部SQL脚本。示例:\i /home/user/init_db.sql
# \ir : 执行相对于当前脚本所在目录的文件。示例:(放在脚本中)\ir ./common/funcs.sql
# \o : 将之后的所有查询结果重定向到文件(直到关闭)。示例:\o /tmp/all_results.csv → 执行一堆查询 → \o(关闭重定向)
# \echo : 打印纯文本到终端(调试用)。示例:\echo '开始导入数据...';\echo -n '无换行'
# \qecho : 打印文本到 \o 指定的输出文件。示例:\o /tmp/log.txt → \qecho '写入日志'
# \warn : 打印警告到标准错误(stderr)。示例:\warn '磁盘空间不足!'
# \copy : 客户端导入导出(不依赖服务端路径)。示例:\copy (SELECT * FROM users) TO '/tmp/users.csv' CSV HEADER; \copy users FROM '/tmp/data.csv' CSV;
3. 格式化输出
# \a : 切换对齐/不对齐模式(默认对齐)。示例:\a(变窄,适合复制到Excel)
# \C : 设置表格标题。示例:\C '2026年销售报表' → 之后查询顶部显示标题
# \f : 设置不对齐模式下的分隔符。示例:\f '|' 然后 \a,输出变成 1|2|3
# \H : 切换HTML输出模式。示例:\H → SELECT * FROM t;(输出<table>标签)
# \pset : 万能排版设置器。示例:\pset border 2(加边框);\pset format csv(输出CSV);\pset null '[NULL]'(空值显示)
# \t : 仅显示数据行(去掉表头/行数)。示例:\t on → SELECT * FROM t;(只输出纯数据)
# \T : 设置HTML表格属性。示例:\H → \T 'border="1" cellpadding="3"'
# \x : 竖排展开模式(列太多必用)。示例:\x auto(根据屏幕宽度自动展开);\x on(强制竖排)
4. 信息查询
# 通用法则:+ = 显示更多详情(大小、注释);S = 包含系统表;过滤支持模式.*或正则,如 \dt log_*
# \d / \d+ : 列出所有表/视图/序列。示例:\d;\d+(显示大小和注释)
# \d NAME : 最常用:查看表结构(字段、索引、外键)。示例:\d orders
# \dt : 仅列出表。示例:\dt public.*
# \dv : 仅列出视图。示例:\dv
# \di : 仅列出索引。示例:\di
# \ds : 仅列出序列。示例:\ds
# \dm : 物化视图。示例:\dm
# \dE : 外部表。示例:\dE
# \dP : 分区表(itn选项:i=索引,t=表,n=嵌套)。示例:\dPt(列出分区表)
# \df : 函数(anptw选项:a聚合/n普通/p存储过程/t触发器/w窗口)。示例:\df(所有函数);\dfn public.*(普通函数)
# \do : 运算符。示例:\do
# \dT : 数据类型。示例:\dT+(含内部类型)
# \du / \dg: 角色/用户。示例:\du+
# \dn : 模式(Schema)。示例:\dn+
# \db : 表空间。示例:\db
# \l : 数据库列表。示例:\l+(显示大小、编码)
# \dx : 扩展插件。示例:\dx+
# \dconfig : 配置参数(即uxsinodb.conf)。示例:\dconfig shared_buffers
# \dp / \z : 权限列表。示例:\dp orders
# \ddp : 默认权限。示例:\ddp
# \dA : 访问方法(如btree, hash)。示例:\dA+
# \dAc / \dAf / \dAo / \dAp : 操作符类/族/操作符/支持函数。示例:\dAc
# \dc : 转换(编码转换)。示例:\dc
# \dC : 类型转换(cast)。示例:\dC
# \dd : 对象注释(comment)。示例:\dd orders
# \dD : 域(Domain)。示例:\dD
# \des / \det / \deu / \dew : 外部服务器/外部表/用户映射/外部数据包装器。示例:\des
# \dF / \dFd / \dFp / \dFt : 全文搜索(配置/字典/解析器/模板)。示例:\dF
# \dL : 过程语言(如pluxsql)。示例:\dL
# \dO : 排序规则(Collation)。示例:\dO
# \dpkg : 包(Package)。示例:\dpkg
# \drds : 每个数据库的角色设置。示例:\drds username dbname
# \dRp / \dRs : 复制发布/订阅。示例:\dRp(发布);\dRs(订阅)
# \dX : 扩展统计信息。示例:\dX
# \dy : 事件触发器。示例:\dy+
# \dl / \lo_list : 大对象列表。示例:\dl
# \sf : 显示函数定义(源码)。示例:\sf+ my_func
# \sv : 显示视图定义。示例:\sv my_view
5. 连接 & 操作系统
# \c : 切换数据库/用户/主机/端口。示例:\c uxdb(切库);\c uxdb uxdb 127.0.0.1 52025
# \conninfo : 显示当前连接详情。示例:\conninfo
# \encoding : 查看/设置客户端字符集。示例:\encoding UTF8
# \password : 修改当前/指定用户密码(安全交互)。示例:\password postgres
# \cd : 切换当前工作目录。示例:\cd /tmp/data
# \getenv : 将系统环境变量赋给uxsql变量。示例:\getenv myvar uxHOST → \echo :myvar
# \setenv : 设置系统环境变量。示例:\setenv uxOPTIONS '-c work_mem=1GB'
# \! : 执行Shell命令。示例:\! ls -la;\! bash(进入shell交互)
# \timing : 开关SQL执行计时。示例:\timing on(之后每个查询显示耗时ms)
6. 变量 & 条件逻辑
# \set : 设置内部变量。示例:\set my_table orders → 之后 SELECT * FROM :my_table;
# \unset : 删除变量。示例:\unset my_table
# \prompt : 交互式给变量赋值。示例:\prompt '请输入日期(YYYY-MM-DD)' report_date → \echo :report_date
# \if / \elif / \else / \endif : 条件执行脚本块。示例:\if :'var' = 'dev' \echo '开发环境' \else \echo '生产环境' \endif
# \errverbose: 显示最近一次错误的完整堆栈。示例:报错后直接输入 \errverbose
7. 大对象操作
# \lo_import : 导入文件为数据库大对象(返回OID)。示例:\lo_import /tmp/photo.jpg '用户头像'
# \lo_export : 导出大对象到文件。示例:\lo_export 16385 /tmp/out.jpg
# \lo_unlink : 删除指定OID的大对象。示例:\lo_unlink 16385
# \lo_list : 列出所有大对象。示例:\lo_list+
8. 帮助
# \? : 列出所有元命令
# \? options : 列出uxsql启动参数(如 -h, -p)
# \? variables : 列出所有可用内部变量(如 DBNAME, USER)
# \h SELECT : 查看SQL语法(支持 \h ALTER TABLE)
遇到不懂的元命令,直接在上述代码块中搜索命令名,查看示例即可。 日常高频使用的命令不超过 15 个(如
\d、\x、\c、\copy、\i、\o、\pset、\watch等)。