类似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