技术开发 频道

主流列式数据库评测:Sybase IQ

  细心的读者可以观察到,demo数据库的启动比起utility_db多了事务日志和启动共享内存链接等步骤。

  服务启动以后,我们既可以用图形界面也可以用命令行工具连接IQ数据库,这里介绍命令行工具连接方法。

  (三)连接和访问数据库

  命令行的语法示例如下,其中uid是用户名,pwd是口令,eng是数据库名,就是上面介绍的iqdemo.cfg中-n所表示的部分,-nogui表示命令行方式,缺一不可。

dbisql -c "uid=dba;pwd=sql;eng=redflag11012601_iqdemo" –nogui

  我们连接上数据库,然后发出一条创建表的命令,执行成功,表明数据库连接正常。

[root@redflag11012601 ~]# . $SYBASE/IQ-15_2/IQ-15_2.sh
[root@redflag11012601 ~]# dbisql -c "uid=dba;pwd=sql;eng=redflag11012601_iqdemo" -nogui

(DBA)> create table t(a varchar(10));
执行时间: 0.021 秒

  如果您的系统采用中文字符,还需要增加charset=gb2312参数,确保命令和错误信息显示中文,否则有时会显示乱码。你可以把LANG环境变量设为C,那么所有提示都是英语。

dbisql -c "uid=dba;pwd=sql;eng=redflag11012601_iqdemo;charset=gb2312" -nogui

  请注意命令行工具有许多限制,但是经常使用SQL Plus的Oracle用户会感觉很类似。

  1.回车表示一行命令的结束,一行命令最多有512个字节。这对于一个稍为复杂的SQL来说都是不可能的任务,甚至一个列较多的表创建语句都是难以办到的。结果只好先把命令保存到脚本文件,通过read命令执行脚本来解决。

  2.SQL脚本文件中如果包含多个SQL语句,如果是多个DDL语句,则都会得到执行,如果是多个SELECT查询语句,则只有最后一个的结果能够显示,这样要批量执行多个查询就很不方便。

  Sybase IQ采用用户作为表的schema,这点与Oracle比较相似,默认用户就是连接时的DBA用户,可以用下述命令创建新用户并赋予相应权限,然后就可以用用户名.表名的方式引用表,不同用户下可以创建同名的表,这些表的物理存储是不同的。

(DBA)> create user ssb identified by ssb;
执行时间: 0.035 秒

(DBA)> grant connect,dba to ssb;
执行时间: 0.006 秒

(DBA)> create table ssb.test(a varchar(10));
执行时间: 0.04 秒

(DBA)> insert into ssb.test values('abc123');
已插入 1 行
执行时间: 0.014 秒

 

0