SinoDB客户端工具dbaccess

  类似Oracle的客户端工具sqlplus,Mysql的客户端工具mysql,SinoDB数据库也有自带的命令行客户端工具dbaccess。

  dbaccess 识别用户输入,将用户输入的 SQL 语句打包发送给 SinoDB 数据库服务器执行,然后接收服务器的执行结果,并按用户的要求将执行结果展示给用户。用户只要安装了 SinoDB 数据库,就可以在命令行启动dbaccess。

dbaccess工作模式

1. 交互模式

1.1 菜单交互模式

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

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

[informix@vm84145 ~]$ dbaccess
DBACCESS: Query-language Connection Database Table Session Exit
Use SQL query language.

------------------------------------------------ Press CTRL-W for Help --------

可在菜单模式下,可以进行以下操作:

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

1.2 指令交互模式

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

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

dbaccess <param1>  <param2>

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

param2:固定为-,表示dbaccess的输入为标准输入STDIN。

示例1:

[informix@vm84145 ~]$ dbaccess - -
> database testdb;

Database selected.

>create table tuser(cuserid int,cusername varchar(50));

Table created.

> insert into tuser values(1,‘sinodb’);

1 row(s) inserted.

Database closed.

示例2:

[informix@vm84145 ~]$ dbaccess testdb -

Database selected.

>select * from tuser;

cuserid cusername

 1 sinodb                                            
1 row(s) retrieved

2. 非交互模式

2.1 管道模式

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

echo "sql_code" | dbaccess <db_name>

示例:

[informix@vm84145 ~]$ echo "select * from tuser;" | dbaccess testdb

Database selected.

    cuserid cusername                                          

          1 sinodb                                            

1 row(s) retrieved.

Database closed.

[informix@vm84145 ~]$ 

2.2 脚本模式

dbaccess <db_name> <sql_file>

示例:

  • 创建脚本文件如下:
[informix@vm84145 ~]$ cat demo.sql
database testdb;
drop table if exists tuser;
create table tuser(cuserid int, cusername varchar(50));
insert into tuser values(1, 'sinodb');
select * from tuser;
  • 执行脚本文件:
[informix@vm84145 ~]$ dbaccess - demo.sql

Database selected.

Table dropped.

Table created.

1 row(s) inserted.

    cuserid cusername                                          

          1 sinodb                                            

1 row(s) retrieved.

Database closed.

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

dbaccess <db_name> <<EOF
<sql_code>
EOF

示例:

  • 创建脚本文件如下:
[informix@vm84145 ~]$ cat demo.sh
#!/bin/bash
dbaccess <<EOF
database testdb;
drop table if exists tuser;
create table tuser(cuserid int, cusername varchar(50));
insert into tuser values(1, 'sinodb');
select * from tuser;
EOF
  • 执行脚本文件:
[informix@vm84145 ~]$ sh demo.sh

Database selected.

Table dropped.

Table created.

1 row(s) inserted.

    cuserid cusername                                          

          1 sinodb                                            

1 row(s) retrieved.

Database closed.

[informix@vm84145 ~]$ 

更多内容,请参考DBAccess用户指南:
SinoDB DB-Access 用户指南 - 产品文档 / 数据库管理 - Sinoregal Tech Forum