hive能替代oracle_hive oracle不同点--未完

--hive 不支持记录级别的更新、插入或者删除操作。(但是用户可以通过查询生成新表,或者将查询结果导入到文件中)

update不同。oracle中用 update...set...但hive中没有‘update’。可以打开‘file

browser’,删除相应文件,再用记事本重新上传,上传之后需要‘让hive知道发生了这个更新',这里需要一行代码 analyze table table_name compute

statistics

删除的方式不同。

--字符串连接符不同。

有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:

MySQL: CONCAT()

Oracle: CONCAT(), ||

SQL Server: +

CONCAT() 的语法如下:

CONCAT(字串1, 字串2, 字串3,

...):

将字串1、字串2、字串3,等字串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。

--注释掉的方式不同

oracle可以用两种方式 ‘ ’和‘--’

hive中只可以使用‘--’(多行注释掉还不会快捷键。。)

--level connect by

oracle中可以使用level connect by 和dual表 创造自增数列,而hive中不支持这些。

oracle中:

select level n

from dual connect by level <=20;

hive中:

create table dual as

with sub as (

select att.id_source

from owner_dwh.f_call_attempt_td att

where att.date_call = '2017-12-03'

limit 1000

)

select row_number() over (order by sub.id_source) as n

from sub;

hive中可以利用row_number函数对一个已有表的primary

key进行排序,从而得到最简单数列 1,2,3,4,...

--hive中 不支持having 和 distinct 出现在同一语句中

例如:

SELECT

*

FROM A

GROUP BY

A.COL_1

HAVING

COUNT(DISTINCT A.COL_2) = 2

在oracle中可以正常运行,但在HIVE中运行会有如下报错:

FAILED: SemanticException [Error 10002]: Line 19:22 Invalid

column reference 'COL_2'

去掉DISTINCT后可以正常执行。

属于HIVE的特性导致的问题,HAVING子句中无法使用DISTINCT关键字,在迁移中需要进行取舍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值