Oracle 到 Impala 查询转换
Posted
技术标签:
【中文标题】Oracle 到 Impala 查询转换【英文标题】:Oracle to Impala Query Conversion 【发布时间】:2017-12-02 01:46:58 【问题描述】:我们正在从 Oracle 迁移到 Hadoop,我正在尝试将以下用 Oracle sql 编写的查询转换为 Impala sql:
CASE WHEN UPPER(table1.ACC_NBR) = LOWER(table1.ACC_NBR) THEN
SUBSTR(table1.ACC_NBR,5,1)||'-'||SUBSTR(table1.ACC_NBR,8,2)||'-'||
SUBSTR(table1.ACC_NBR,10,3)||'-'||SUBSTR(table1.ACC_NBR,13,6)
ELSE
SUBSTR(table1.ACC_NBR,5,1)||'-'||SUBSTR(table1.ACC_NBR,6,2)||'-' ||
SUBSTR(table1.ACC_NBR,10,2)||'-'||SUBSTR(table1.ACC_NBR,13,6)
END
我在业务对象宇宙设计工具中使用此查询,它给了我错误
SUBSTR(table1.ACC_NBR,5,1) 或 ||'-'||是一个布尔预期字符串
。有人可以看看查询,看看有什么遗漏或多余的吗?
提前致谢。
【问题讨论】:
【参考方案1】:||
在 impala 中未被识别为连接运算符。请改用CONCAT
函数。
CASE
WHEN
UPPER(table1.ACC_NBR) = LOWER(table1.ACC_NBR)
THEN
CONCAT ( SUBSTR(table1.ACC_NBR, 5, 1), '-', SUBSTR(table1.ACC_NBR, 8, 2), '-',
SUBSTR(table1.ACC_NBR, 10, 3), '-', SUBSTR(table1.ACC_NBR, 13, 6) )
ELSE
CONCAT ( SUBSTR(table1.ACC_NBR, 5, 1), '-', SUBSTR(table1.ACC_NBR, 6, 2), '-' ,
SUBSTR(table1.ACC_NBR, 10, 2), '-', SUBSTR(table1.ACC_NBR, 13, 6) )
END
【讨论】:
以上是关于Oracle 到 Impala 查询转换的主要内容,如果未能解决你的问题,请参考以下文章
Impala 中的 fnv_hash() 与 oracle 哈希值
使用SparkSQL迁移oracle数据到impala创建的kudu表中,出现Primary key column riskcode is not set错误
使用SparkSQL迁移oracle数据到impala创建的kudu表中,出现Primary key column riskcode is not set错误