【我和openGauss的故事】详解openGauss客户端工具gsql的高级用法

前言:

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

gsql的基本功能

  1. 连接数据库。

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

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

一、高级特性

1、变量

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

  1. 设置变量
    \set name wang5

  2. 查看变量
    \echo :name
    a23d4acd-b017-4def-ba93-924253ad6f3b.png

  3. 要删除一个变量请使用如下方式
    \unset name

  4. 查看所有变量
    \set
    a03f898b-af5d-42ae-9c3a-5976f3fe65c4.png
    此时name的值被删除

  5. 不写第二个参数的情况
    \set name1
    \echo :name1
    查看
    367395ff-2ddd-45fb-9024-0c787e77f33b.png
    参数被赋予空值

  6. 变量的引用
    \set id 2
    select * from tb1 where id=:id
    73d845d3-66cc-43d9-ba10-3a57818805a8.png

二、连接数据库

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:开启在客户端操作中可以进行编辑的模式。

27500715-ab89-4296-b032-fad30d4d894d.png

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

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

三、执行sql语句

在gsql中创建表。

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

565591be-7f10-4f1d-957a-28b04a3f26cd.png

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

插入数据库

insert into tb1(id,name) values(1,'wang5');
insert into tb1(id,name) values(2,'zhang3');
insert into tb1(id,name) values(3,'li4');

44c8d873-3b8e-4f80-9860-ce8809f653ba.png

四、执行元命令

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

一般的元命令
查询缓存区元命令
输入/输出元命令
显示信息元命令
格式化元命令
连接元命令
操作系统元命令
变量元命令和表
大对象元命令

4.1、元命令

4.1.1 -c 的使用

[omm@master01 dn]$ gsql -d postgres -p 15400  -c "select * from tb1"

ab7f3cba-8221-4ab4-b74b-971c5bb4f90a.png

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

4.1.2 -f 的使用

[omm@master01 dn]$ gsql -d postgres -p 15400  -f /home/omm/i.sql

说明:i.sql里面的内容是插入3条数据库

187e33f0-139b-4672-851c-817214ad239b.png

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

4.1.3 -l 的使用

[omm@master01 dn]$ gsql -d postgres -p 15400  -l

379bf6b1-d990-41b4-904d-692620e9a2f8.png

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

4.1.4 -c -A -t -F ‘)(’ 的使用

[omm@master01 dn]$ gsql -d postgres -p 15400 -c "select * from tb1" -A -t -F ')('

d8568655-f074-41f2-a3a6-fdb783ebfe00.png

-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是不能够正确执行的。
bcb520c5-3866-457a-a8e2-f9836b986f59.png
执行结果
02c9d339-97a5-4eac-b86b-7c60009d4674.png
查看是否插入成功。
fc31f1f2-a694-47f6-875f-8ab9b10e519a.png
可以看出,t1.sql中的语句全部没有插入成功。
为了做对比,把-1参数去掉,继续执行。

[omm@master01 dn]$ gsql -d postgres -p 15400  -f /home/omm/t1.sql

执行结果
05075281-9d8f-405f-b167-87898953b0fc.png
查看是否插入成功。
94e2d508-d2e4-4ff3-a6d2-34e4e0505441.png
可以看出,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=#

f9369772-980e-4cf2-9a3c-738740e93cfd.png

-q:安静模式,执行时不会打印出额外信息。

4.1.8 -o 的使用

gsql -d postgres -p 15400 -o /home/omm/out.txt -c "select * from tb1"

d9c5ba9a-d6d4-4c8e-8e40-4494a58b61da.png
通过查看out.txt,可以看到查询的结果已经存放到文件中。

-o:将所有查询输出重定向到文件FILENAME。

4.2、gsql元命令:

常用元命令介绍演示:

  • \l[+]:列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限
    23fcb4db-ac53-464a-81ff-93d780a1e859.png

  • \db[+]:列出所有可用的表空间。
    92285d0c-7b39-4df9-89ea-235be21a57ba.png

  • \c :连接到一个新的数据库
    a223aedc-34cc-4900-bcae-559c11b44b7c.png

  • \d:列出当前模式下所有的表、视图和序列
    8f071b2b-6564-4122-9605-08532f450079.png

  • \di:索引
    797431a0-7363-45ef-b311-5831aa6eb1f6.png

  • \ds:序列
    55a9701d-d914-40a1-b660-deeae1de7bd4.png

  • \dv:视图
    6c3fb5c7-f66c-4d7a-b74e-f8b602319445.png

  • \du:列出所有数据库角色。
    3deb22be-08ca-4a20-8f39-3b3e07583afb.png

  • \df:列出所有可用函数
    d934f1d8-4914-449b-a5bf-59e48ce58f9b.png

  • \dt tb1:表的信息
    28e9f6c0-8484-4d82-b45b-e43446d34742.png

  • \h:给出指定SQL语句的语法帮助。
    c0e07027-14af-4f2e-b0af-d7d9175c88ab.png
    440d2b98-c5d1-4092-8d9c-707cdacd48fc.png

本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

openGauss社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值