hana的使用是次意外,我们做的产品是要给不同的客户使用,那么就会有不同的要求,所以我们也是在开发阶段就适配了多种数据库, 我平时开发中多用到的是MySQL,其次是oracle,还有PostgreSQL等,但是我从没有接触过有用SAP HANA的客户,黑天鹅事件出现了 ,这次就遇到了。
OK,这次就把hana的使用遇到的个别性问题做个整理下。
客户的需要想要把数据库从mysql转到hana上去,我这边要去验证其可行性,按照下面步骤处理的
- 初始化工具
- 初始化表结构脚本
- 初始化表数据脚本
- 运行服务
- 总结
之前只听说过hana是一个内存数据库,可以提供很高效的数据操作,但是费用也很高,一般的公司用不起,都是用redis缓存重要的数据,在我的印象中用hana的公司就像一个用戴森吹风机的人一样,哇,真有钱。惊讶归惊讶 ,客户就是上帝 活还是要干的。
我这边拿到测试的账号密码是这样的
HANA服务器IP:192.xxx.xx.xx
登录账户:SYSTEM
密码:Ajisun1234
端口:35244
次接触都不知道怎么登录,百度一番之后可以用SAP HANA Studio
登录,但是呢这个客户端下载安装登录折腾了两天才搞定,这个账号依然没有登录成功...... 因为我这个端口不是默认的,我下载的studio只能使用默认的端口,所以终还是放弃了studio。 后面通过询问了解hana的同事 使用了DBeaver( https://dbeaver.io/) 还支持mac,后面就下载了这个客户端开启了hana之旅。
一些简单的sql 操作
hana的每个用户都有自己默认的schema,所以执行的sql是默认的schema,想操作其他schema需要schema.table的方式(和oracle一样)
-- 创建用户以及同名schema
CREATE USER ajisun PASSWORD Ajisun1234 NO FORCE_FIRST_PASSWORD_CHANGE;
-- 删除schema ajisun
drop schema ajisun
-- 授权schema
GRANT CREATE SCHEMA TO username
hana的sql大体上是mysql/oracle一样的,下面列举一些差异性问题:
1. 分页查询功能
mysql
SELECT * FROM user LIMIT , 10
-- 或者
SELECT * FROM user LIMIT 10 offset
hana
-- hana不支持limit 0,10的格式
SELECT * FROM user LIMIT 10 offset
2. 批量操作
mysql
-- 不能有多个,但是可以插入单条
insert into user(id,name) values('ss'),('ss'),('ss').......
hana
-- 不支持上面那种values
insert into user(id,name) select t.* from (
select '张三' from dummy
union all
select '李四' from dummy
union all
select '王五' from dummy
) t
3. 序列问题
hana和oracle一样都是有序列的,ID可以通过序列获取 oracle
SELECT user_S.nextval from dual
hana
SELECT user_S.nextval from dummy
4. 索引相关
同一个字段建两个不同名字的索引,mysql是支持的,hana不支持,相当于重复建索引了
5. TINYINT数据类型
- mysql 默认是无符号的范围是-128~127,带符号0~255
- hana 没有选择,范围是0~255
6. alter修改varchar的长度
hana数据库中varchar长度只能增加,不能减少
ALTER TABLE ajisun.user ALTER (name VARCHAR(100))
-- feature not supported: cannot shorten the field length
7. 不支持操作varchar转NCLOB
mysql可以把varchar转成longtext,但是hana不支持varchar转成NCLOB
ALTER TABLE ajisun.user ALTER (name NCLOB)
-- feature not supported: cannot modify column type from varchar to nclob
8. DISTINCT 区别
mysql的distinct后面可以是longtext的字段 hana的distinct后面不能包含NCLOB的字段
就那么多,再见
来源 https://zhuanlan.zhihu.com/p/453006458