当前位置: 首页 > news >正文

02-GBase 8s 事务型数据库 客户端工具dbaccess

dbaccess概述

数据库产品通常会提供一个命令行客户端工具。

                数据库厂商                 

                   命令行客户端               

Oracle

sqlplus

MySQL

mysql

Marladb

mysql

GBase 8s

dbaccess

Kingbase ES

ksql

DM8

disql

dbaccess 是 GBase 8s 数据库的一个命令行客户端工具,用来与 GBase 8s 数据库服务器进行交互。
dbaccess 是 GBase 8s 数据库自带的工具,只要安装了 GBase 8s 数据库,就可以在命令行启动该工具。
dbaccess 识别用户输入,将用户输入的 SQL 语句打包发送给 GBase 8s 数据库服务器执行,并接收服务器的执行结果,并按用户的要求将执行结果展示给用户。
 

dbaccess工作模式

交互模式

菜单交互模式

dbaccess提供了一个基于控制台的菜单,用户可以使用方向键或快捷键,选择和执行相应的功能。

直接运行dbaccess命令,即可进入菜单的交互模式。

DEMO

选择/连接数据库实例
编辑/执行SQL代码
选择/执行文件中的SQL代码
注: 可选择和执行的文件,在启动dbaccess目录中,且扩展名为.sql。

指令交互模式

dbaccess提供了一个类似mysql或sqlplus的客户端交互模式,用户输入要执行的指令并回车,dbaccess执行用户输入的指令,并返回执行结果。

可以通过为dbaccess提供两个参数,进入指令交互模式。

dbaccess <param1> <param2>param1:提供数据库名称或-,当该参数为-时,表示未选择默认的数据库,后续可在dbaccess中,使用database <db_name>指定当前数据库。param2:固定为-,表示dbaccess的输入为标准输入STDIN。

DEMO

[gbasedbt@train ~]$ dbaccess - -
Your evaluation license will expire on 2022-06-09 00:00:00
> database gbasedb;Database selected.> drop table if exists t_user;Table dropped.> create table t_user(f_userid int, f_username varchar(50));Table created.> insert into t_user values(1, 'gbasedbt');1 row(s) inserted.> select * from t_user;f_userid f_username                                         1 gbasedbt                                          1 row(s) retrieved.> 

非交互模式

管道模式

dbaccess可以接收STDIN中的内容,做为dbaccess需要执行的指令。

echo "sql_code" | dbaccess <db_name>

DEMO

[gbasedbt@train ~]$ echo "select * from t_user;" | dbaccess gbasedb 
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_userid f_username                                         1 gbasedbt                                          1 row(s) retrieved.Database closed.[gbasedbt@train ~]$ 
脚本模式

可以将SQL代码保存到文件中,将文件做为dbaccess的第二个参数,来执行文件中的SQL代码。

dbaccess <db_name> <sql_file>

DEMO

[gbasedbt@train ~]$ cat demo.sql
database gbasedb;drop table if exists t_user;create table t_user(f_userid int, f_username varchar(50));insert into t_user values(1, 'sql_in_file');select * from t_user;[gbasedbt@train ~]$ dbaccess - demo.sql
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.Table dropped.Table created.1 row(s) inserted.f_userid f_username                                         1 sql_in_file                                       1 row(s) retrieved.Database closed.[gbasedbt@train ~]$ 

可以将SQL代码直接写在脚本文件中,采用如下方式,执行SQL代码。

dbaccess <db_name> <<EOF
<sql_code>
EOF

DEMO

[gbasedbt@train ~]$ cat demo.sh
#!/bin/bashdbaccess <<EOF
database gbasedb;drop table if exists t_user;create table t_user(f_userid int, f_username varchar(50));insert into t_user values(1, 'shell');select * from t_user;EOF[gbasedbt@train ~]$ sh demo.sh
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.Table dropped.Table created.1 row(s) inserted.f_userid f_username                                         1 shell                                             1 row(s) retrieved.Database closed.[gbasedbt@train ~]$ 

dbaccess环境变量

DBFLTMASK

默认情况下,dbaccess会尽可能的显示浮点数的小数位数。通过设置该环境变量,控制dbaccess在输出小数信息时,尽量只显示指定位数的小数。

export DBFLTMASK=3

DEMO

[gbasedbt@train ~]$ cat float.sql
database gbasedb;drop table if exists t_float;create table t_float(f_num float);insert into t_float values(1234567890.123456);
insert into t_float values(12345.6789);
[gbasedbt@train ~]$ unset DBFLTMASK
[gbasedbt@train ~]$ echo $DBFLTMASK[gbasedbt@train ~]$ echo "select * from t_float" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_num 1234567890.123
12345.678900002 row(s) retrieved.Database closed.[gbasedbt@train ~]$ export DBFLTMASK=3
[gbasedbt@train ~]$ echo "select * from t_float" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_num 1234567890.12312345.6792 row(s) retrieved.Database closed.[gbasedbt@train ~]$ 

DBEDIT

设置dbaccess中使用的操作系统文本编辑器,默认为vi。

export DBEDIT=vi

DBMONEY

GBase 8s中的money数据类型的显示。默认情况下,会根据操作系统的本地化设置,显示货币信息。可以通过该环境变量,设置需要显示的信息。

export DBMONEY="[front][.|,][back]"

DEMO

[gbasedbt@train ~]$ cat money.sql 
database gbasedb;drop table if exists t_money;
create table t_money(f_id int, f_num money);insert into t_money values(1, 123.456);
insert into t_money values(2, 123456.789);
insert into t_money values(3, 1234567890.123456789);[gbasedbt@train ~]$ dbaccess gbasedb money.sql 
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.Database closed.Database selected.Elapsed time: 0.001 secTable dropped.Elapsed time: 0.004 secTable created.Elapsed time: 0.001 sec1 row(s) inserted.Elapsed time: 0.001 sec1 row(s) inserted.Elapsed time: 0.001 sec1 row(s) inserted.Elapsed time: 0.001 secDatabase closed.[gbasedbt@train ~]$ echo "select * from t_money" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_id               f_num 1          RMB 123.462       RMB 123456.793   RMB 1234567890.123 row(s) retrieved.Elapsed time: 0.002 secDatabase closed.[gbasedbt@train ~]$ echo $LANG
en_US.UTF-8
[gbasedbt@train ~]$ export DBMONEY="$"
[gbasedbt@train ~]$ echo "select * from t_money" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_id            f_num 1          $123.462       $123456.793   $1234567890.123 row(s) retrieved.Elapsed time: 0.005 secDatabase closed.[gbasedbt@train ~]$ export DBMONEY=".$"
[gbasedbt@train ~]$ echo "select * from t_money" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_id            f_num 1          123.46$2       123456.79$3   1234567890.12$3 row(s) retrieved.Elapsed time: 0.002 secDatabase closed.[gbasedbt@train ~]$ 

GL_DATE

GBase 8s中的date数据类型,默认格式为月/日/年(英文),可以设置GL_DATE环境变量,改变DATE数据的显示格式。

export GL_DATE="%iY-%m-%d"

DEMO

[gbasedbt@train ~]$ cat date.sql
database gbasedb;drop table if exists t_date;create table t_date(f_dt date);insert into t_date values('06/18/2021');select * from t_date;
[gbasedbt@train ~]$ unset GL_DATE
[gbasedbt@train ~]$ echo $GL_DATE[gbasedbt@train ~]$ dbaccess gbasedb date.sql
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.Database closed.Database selected.Elapsed time: 0.001 secTable dropped.Elapsed time: 0.001 secTable created.Elapsed time: 0.004 sec1205: Invalid month in date
Error in line 7
Near character position 38f_dt             No rows found.Elapsed time: 0.001 secDatabase closed.[gbasedbt@train ~]$ echo $LANG
en_US.UTF-8
[gbasedbt@train ~]$ export GL_DATE="%m/%d/%iY"
[gbasedbt@train ~]$ echo "insert into t_date values('06/18/2021');" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.1 row(s) inserted.Elapsed time: 0.004 secDatabase closed.[gbasedbt@train ~]$ echo "select * from t_date" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_dt       06/18/20211 row(s) retrieved.Elapsed time: 0.005 secDatabase closed.[gbasedbt@train ~]$ export GL_DATE="%iY-%m-%d"
[gbasedbt@train ~]$ echo $GL_DATE
%iY-%m-%d
[gbasedbt@train ~]$ echo "select * from t_date" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_dt       2021-06-181 row(s) retrieved.Elapsed time: 0.002 secDatabase closed.[gbasedbt@train ~]$ 

DBACCESS_SHOW_TIME

控制dbaccess在执行SQL时,是否显示SQL的执行时间。

export DBACCESS_SHOW_TIME=1

DEMO

[gbasedbt@train ~]$ unset DBACCESS_SHOW_TIME
[gbasedbt@train ~]$ echo $DBACCESS_SHOW_TIME[gbasedbt@train ~]$ echo "select * from t_float" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_num 1234567890.12312345.6792 row(s) retrieved.Database closed.[gbasedbt@train ~]$ export DBACCESS_SHOW_TIME=1
[gbasedbt@train ~]$ echo $DBACCESS_SHOW_TIME
1
[gbasedbt@train ~]$ echo "select * from t_float" | dbaccess gbasedb
Your evaluation license will expire on 2022-06-09 00:00:00Database selected.f_num 1234567890.12312345.6792 row(s) retrieved.Elapsed time: 0.001 secDatabase closed.[gbasedbt@train ~]$ 

附录

日期格式化参数

格式化符说明
%a星期的短格式表示
%A星期的完整格式表示
%b月份的短格式表示
%B月份的完整格式表示
%C世纪的表示,通常是年值除以100后的整数部分
%d天(01-31)
%D相当于格式:%m/%d/%y
%e天(1-31)
%h和%b相同
%H小时(00-24)
%iy两位年(00-99)
%IY四位年(0000-9999)
%m月(01-12)
%M分钟(00-59)
%n换行符
%S秒(00-59)
%t制表符
%w星期的数字表示(0-6)
%y两位年(00-99)
%Y四位年(0000-9999)

相关文章:

  • 蓝桥杯FPGA赛道积分赛
  • 从颜料混色到网络安全:DH算法的跨界智慧
  • V型球阀材质性能深度解析:专攻颗粒、料浆与高腐蚀介质的工业利器-耀圣
  • 《React Native热更新实战:用Pushy打造无缝升级体验》
  • 密码学--RSA
  • 数据来源合法性尽职调查:保障权益的关键防线
  • 手势、鼠标滑动实现界面切换
  • mysql数据库初体验
  • java集成telegram机器人
  • 软件设计师教程——第一章 计算机系统知识(上)
  • python 上海新闻爬虫
  • vue-grid-layout实现拖拽修改工作台布局
  • Qt/C++开发监控GB28181系统/警情订阅/目录订阅/报警事件上报/通道上下线
  • <template>标签的用法
  • 基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(下)
  • FastExcel 本地开发和Linux上上传Resource文件的差异性
  • kotlin JvmName注解的作用和用途
  • 游戏引擎学习第264天:将按钮添加到分析器
  • VTK|.obj文件数据处理+Jet/Viridis/CoolToWarm/Grayscale/Rainbow/风格颜色渲染
  • 如何使用极狐GitLab 软件包仓库功能托管 helm chart?
  • 从上海首个到成片复制,闵行零工市场如何优化劳动就业服务?
  • 多人称华为手机忽现拍照模糊疑存缺陷,售后回应:主摄像头故障
  • 进化版大巴黎通杀英超,那个男人后悔了吗
  • 明查|这是“C919迫降在农田”?实为飞机模型将用于科普体验
  • 外交部:解放军参加红场阅兵体现了中方对历史的尊重和铭记
  • 特朗普要征电影关税惊扰全球电影业,“让好莱坞再次伟大”或现反效果