详解openGauss客户端工具gsql的高级用法

前言:

gsql是openGauss提供在命令行下运行的数据库连接工具,可以通过此工具连接服务器并对其进行操作和维护,除了具备操作数据库的基本功能,gsql还提供了若干高级特性,便于用户使用。

gsql的基本功能

连接数据库;

执行SQL语句:支持交互式地键入并执行SQL语句,也可以执行一个文件中指定的SQL语句;

执行元命令:元命令可以帮助管理员查看数据库对象的信息、查询缓存区信息、格式化SQL输出结果、以及连接到新的数据库等。

一、高级特性

1、变量

gsql提供类似于Linux的shell命令的变量特性,可以使用gsql的原命令\set设置一个变量。格式如下:

设置变量

\set name wang5

查看变量

\echo :name

要删除一个变量请使用如下方式

\unset name

查看所有变量

\set

此时name的值被删除

不写第二个参数的情况

\set name1

\echo :name1

参数被赋予空值

变量的引用

\set id 2

select * from tb1 where id=:id

二、连接数据库

gsql -h master01 -p 15400 -d postgres -U gsname -W 'gsname@123' -r

-h:后面的地址(master01)是数据库所在的IP地址或者是主机名。

-p:后面的端口(15400)是数据库的监听端口,默认的端口是5432

-d:后面的参数(postgres)是创建的数据库名称

-U:后面的参数(gsname)是创建的用户名

-W:后面的参数(gsname@123)是omm用户的密码

-r:开启在客户端操作中可以进行编辑的模式

禁止使用omm用户进行远程连接数据库

Trust安全认证模式(pg_hba.conf)仅允许本地登录,远程无法使用该模式登录

三、执行sql语句

在gsql中创建表

create table tb1(id int,name varchar2(20));

通常,输入的命令行在遇到分号的时候结束。如果输入的命令行没有错误,结果就会输出到屏幕上

插入数据库

insert into tb1(id,name) values(1,'wang5');

insert into tb1(id,name) values(2,'zhang3');

insert into tb1(id,name) values(3,'li4');

四、执行元命令

所谓元命令就是在gsql里输入的任何以不带引号的反斜杠开头的命令

一般的元命令

查询缓存区元命令

输入/输出元命令

显示信息元命令

格式化元命令

连接元命令

操作系统元命令

变量元命令和表

大对象元命令

4.1、元命令

4.1.1 -c 的使用

omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -c "select \* from tb1" -c:声明gsql要执行一条字符串命令然后退出 4.1.2 -f 的使用 \[omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -f /home/omm/i.sql 说明:i.sql里面的内容是插入3条数据库 -f:使用文件作为命令源而不是交互式输入。gsql将在处理完文件后结束. 4.1.3 -l 的使用 \[omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -l -l:列出所有可用的数据库,然后退出 4.1.4 -c -A -t -F ')(' 的使用 \[omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -c "select \* from tb1" -A -t -F ')(' -A:切换为非对齐输出模式。 -t:只打印行。 -F:设置域分隔符(默认为"\|")。 4.1.5 -E 的使用 \[omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -E -E:回显由\\d和其他反斜杠命令生成的实际查询 4.1.6 -1(数字1) -f 的使用 \[omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -1 -f /home/omm/t1.sql 下面是t1.sql文件中的sql,第3行insert是不能够正确执行的。 执行结果 查看是否插入成功 可以看出,t1.sql中的语句全部没有插入成功 为了做对比,把-1参数去掉,继续执行 \[omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -f /home/omm/t1.sql 执行结果 查看是否插入成功 可以看出,3条正确的insert语句是插入到表中的 -1 ("one"):当gsql使用-f选项执行脚本时,会在脚本的开头和结尾分别加上START TRANSACTION/COMMIT用以把整个脚本当作一个事务执行。 这将保证该脚本完全执行成功,或者脚本无效。 说明: 如果脚本中已经使用了START TRANSACTION、COMMIT、ROLLBACK,则该选项无效。 4.1.7 -q 的使用 \[omm[@master01](https://github.com/master01 "@master01") dn\]$ gsql -d postgres -p 15400 -q openGauss=# -q:安静模式,执行时不会打印出额外信息 4.1.8 -o 的使用 gsql -d postgres -p 15400 -o /home/omm/out.txt -c "select \* from tb1" 通过查看out.txt,可以看到查询的结果已经存放到文件中 -o:将所有查询输出重定向到文件FILENAME 4.2、gsql元命令: 常用元命令介绍演示: \\l\[+\]:列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限 \\db\[+\]:列出所有可用的表空间 \\c :连接到一个新的数据库 \\d:列出当前模式下所有的表、视图和序列 \\di:索引 \\ds:序列 \\dv:视图 \\du:列出所有数据库角色 \\df:列出所有可用函数 \\dt tb1:表的信息 \\h:给出指定SQL语句的语法帮助

相关推荐
heartbeat..4 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
麦聪聊数据6 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
AC赳赳老秦7 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
YMatrix 官方技术社区7 小时前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
辞砚技术录8 小时前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong9 小时前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
欧亚学术9 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表
黑白极客10 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
大厂技术总监下海10 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
LeenixP11 小时前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板