绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
记一次SAP HANA与MySQL/Oracle的部分区别
2022-03-11 10:48:15

hana的使用是次意外,我们做的产品是要给不同的客户使用,那么就会有不同的要求,所以我们也是在开发阶段就适配了多种数据库, 我平时开发中多用到的是MySQL,其次是oracle,还有PostgreSQL等,但是我从没有接触过有用SAP HANA的客户,黑天鹅事件出现了 ,这次就遇到了。

OK,这次就把hana的使用遇到的个别性问题做个整理下。

客户的需要想要把数据库从mysql转到hana上去,我这边要去验证其可行性,按照下面步骤处理的

  • 初始化工具
  • 初始化表结构脚本
  • 初始化表数据脚本
  • 运行服务
  • 总结

之前只听说过hana是一个内存数据库,可以提供很高效的数据操作,但是费用也很高,一般的公司用不起,都是用redis缓存重要的数据,在我的印象中用hana的公司就像一个用戴森吹风机的人一样,哇,真有钱。惊讶归惊讶 ,客户就是上帝 活还是要干的。

我这边拿到测试的账号密码是这样的

HANA服务器IP192.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数据类型

  1. mysql 默认是无符号的范围是-128~127,带符号0~255
  2. 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

分享好友

分享这个小栈给你的朋友们,一起进步吧。

SAP HANA
创建时间:2022-03-04 16:28:44
SAP HANA
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~