详解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 dn]$ gsql -d postgres -p 15400 -c “select * from tb1”
 

-c:声明gsql要执行一条字符串命令然后退出

4.1.2 -f 的使用
[omm@master01 dn]$ gsql -d postgres -p 15400 -f /home/omm/i.sql
说明:i.sql里面的内容是插入3条数据库

-f:使用文件作为命令源而不是交互式输入。gsql将在处理完文件后结束.

4.1.3 -l 的使用
[omm@master01 dn]$ gsql -d postgres -p 15400 -l
 

-l:列出所有可用的数据库,然后退出

4.1.4 -c -A -t -F ‘)(’ 的使用
[omm@master01 dn]$ gsql -d postgres -p 15400 -c “select * from tb1” -A -t -F ‘)(‘
 

-A:切换为非对齐输出模式。
-t:只打印行。
-F:设置域分隔符(默认为“|”)。

4.1.5 -E 的使用
[omm@master01 dn]$ gsql -d postgres -p 15400 -E
-E:回显由\d和其他反斜杠命令生成的实际查询

4.1.6 -1(数字1) -f 的使用
[omm@master01 dn]$ gsql -d postgres -p 15400 -1 -f /home/omm/t1.sql
下面是t1.sql文件中的sql,第3行insert是不能够正确执行的。
执行结果
查看是否插入成功
可以看出,t1.sql中的语句全部没有插入成功
为了做对比,把-1参数去掉,继续执行
[omm@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 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语句的语法帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

https 加密解密过程是什么?

HTTPS 加密通信过程中,主要涉及到以下几个步骤: 握手阶段(handshake phase): 客户端向服务器端发送一个加密通信请求,并提供自己的加密能力列表,以及一个随机生成的密钥(Pre-master secret)。…

uniapp让输入框保持聚焦状态,不会失去焦点

使用场景:当输入框还有发送按钮的时候,点击发送希望软键盘不消失,还可以继续输入,或者避免因输入图片标签造成的屏闪问题 多次尝试后发现一个很实用的方法,适用input输入框和editor输入框 解决办法:把cli…

AXI4总线解析

一、读地址 AWVALID和AWREADY同时为高时,在这个上升沿,图中黄线,将接下来的数据写入地址40000000中。 在

基于状态机的按键消抖实现

摸鱼记录 Day_14 !(^O^)y review 在day_13中以按键状态判断为例学习了状态分析基于状态机的按键消抖原理-CSDN博客 分析得到了下图: 今日任务:完成此过程 !(^O^)y 小梅哥对应视频: 15B 基于状态机的按键消抖Verilog实现_哔哩哔哩…

springboot/ssm图书管理系统Java图书馆图书统计系统web

springboot/ssm图书管理系统Java图书馆图书统计系统web 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql …

DataFunSummit 2023:洞察现代数据栈技术的创新与发展(附大会核心PPT下载)

随着数字化浪潮的推进,数据已成为企业竞争的核心要素。为了应对日益增长的数据挑战,现代数据栈技术日益受到业界的关注。DataFunSummit 2023年现代数据栈技术峰会正是在这样的背景下应运而生,汇聚了全球数据领域的精英,共同探讨现…

Linux 文件操作命令

1 文件与目录操作 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录cd ../.. 返回上两级目录cd - 返回上次所在目录cp file1 file2 将file1复制为file2cp -a dir1 dir2 复制一个目录 cp -a /tmp/dir1 . 复制一个…

nginx作为tcp的负载均衡

背景: 之前总以为nginx只能当静态资源web容器和web的负载均衡,现在才知道原来也可以当tcp的负载均衡。现在我们项目测试服就是一个nginx对应了2个测试服的负载均衡。配置如下: [rootlocalhost conf]# cat nginx.conf#user nobody; worker_processes …

【Qt】初识Qt

文章目录 一. 行业岗位介绍二. 什么是客户端?三. GUI 开发的各自技术方案四. 什么是框架?五. Qt 的发展史五. Qt 支持的系统六. Qt 的优点 一. 行业岗位介绍 二. 什么是客户端? 既然 Qt 是用来进行客户端开发的,那我们就要了解什…

如何保证ES和数据库的数据一致性?

在业务中,我们通常需要把数据库中的数据变更同步到ES中,那么如何保证数据库和ES的一致性呢?通常有以下几种做法: 双写 在代码中,对数据库和ES进行双写,并且先操作本地数据库,后操作ES&#xff…

Ubuntu20.04安装并配置vscode

Ubuntu20.04安装并配置vscode vscode安装miniconda安装创建虚拟python3.8环境pytorch和匹配的cuda安装 vscode安装 VSCode可以通过 Snapcraft 商店或者微软源仓库中的一个 deb 软件包来安装。 我们这里选用安装VSCode snap版,打开你的终端(CtrlAltT)并且运行下面的…

Apache Paimon 使用之 Creating Table

1.创建 Catalog 管理的 Tables 在Paimon Catalog中创建的Tables由Catalog管理,当Tables从Catalog中删除时,其table files也将被删除。 当使用Paimon Catalog,创建一个名为MyTable的managed table,在Catalog的default数据库中有五…

px2rem实现vue项目响应式布局

第一步 首先需要在项目中安装px2rem插件 npm install postcss-px2rem px2rem-loader --save 第二步 在项目src目录下新建util文件夹,在util文件夹下新建rem.js文件,内容如下: // rem等比适配配置文件 // 基准大小 const baseSize 14 //…

【机器学习300问】27、什么是决策树?

〇、两个预测任务 (1)任务一:银行预测偿还能力 当前,某银行正致力于发掘潜在的放贷用户。他们掌握了每位用户的三个关键特征:房产状况、婚姻状况以及年收入。此外,银行还拥有过往这些用户的债务偿还能力的…

刚工作菜鸟的小总结2

刚工作菜鸟的小总结2 1. using 关键字 using关键字可以用来定义一个类型的别名。例如 using SI_Error = int ,它的作用是将 SI_Error 这个名称与 int 类型进行关联,也就是说在后续代码中,可以使用 SI_Error 来代替 int 类型。如果程序中出现了 SI_Error ,我们就能清晰知道…

c/c++ 指针

参考链接:https://blog.csdn.net/soonfly/article/details/51131141 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 一、指针定义 复杂指针定义涉及较多运算符,分析指针功能从变量名处起,根据运算符优先级结合,一步一步分析。首…

Linux系统——LVS-DR群集部署及拓展

目录 引言 1.LVS的工作模式及其工作过程 2.列举出LVS调度算法 3.LVS调度常见算法(均衡策略) 3.1固定调度算法:rr,wrr,dh,sh 3.2动态调度算法:wlc,lc,lblc 4.LVS三种工作模式区别 一、I…

前端每日一练:vue3 为什么要用 proxy 替换 Object.defineproperty ?为什么只对对象劫持,而要对数组进行方法重写?

vue3 为什么要用 proxy 替换 Object.defineproperty ? Vue 3 在设计上选择使用 Proxy 替代 Object.defineProperty 主要是为了提供更好的响应性和性能。​Object.defineProperty 是在 ES5 中引入的属性定义方法,用于对对象的属性进行劫持和拦截。Vue 2.…

更快更强,Claude 3全面超越GPT4,能归纳15万单词

ChatGPT4和Gemini Ultra被Claude 3 AI模型超越了? 3月4日周一,人工智能公司Anthropic推出了Claude 3系列AI模型和新型聊天机器人,其中包括Opus、Sonnet和Haiku三种模型,该公司声称,这是迄今为止它们开发的最快速、最强…

.NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例

在本文中,我们将详细介绍.NET Core日志内容,包括不同日志级别的区别,以及一些常用的日志记录实用工具和第三方库。同时,我们还将通过示例来展示如何使用这些工具和库。 一、.NET Core日志级别 .NET Core日志系统提供了五种日志级…