• 详解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语句的语法帮助

  • 相关阅读:
    OSError: [Errno 22] Invalid argument: ‘D:\test\x07‘
    [论文笔记]A COMPARE-AGGREGATE MODEL FOR MATCHING TEXT SEQUENCES
    谷歌浏览器F12有报错,但控制台看不到具体报错信息
    Vue路由(vue-router)
    C++内点法求解大规模线性规划问题——对标MATLAB中linprog函数
    只有线上出了bug,老板们才知道测试的价值?
    C++手撕红黑树
    Spring | 事务没有生效导致数据没有持久化的探究
    RabbitMQ--基础--7.2--工作模式--工作队列
    算法入门(三):异或位运算的知识和拓展
  • 原文地址:https://blog.csdn.net/renxyz/article/details/136509281