我想在 hive 表中插入一条记录,但在插入之前我想检查该记录是否已存在于表中。那种情况我不会插入记录而宁愿跳过它。
我使用的Hive版本是Hive 1.1.0.
表格结构:
hk | diagnosisid | id | cdcode
-----------------------------------------------------------
EXVWLOORV@#19690321F | 1 | 7810 | I9C
OHQQDUG@#19380630F | 1 | 3643 | I9C
VPLWK@#19610120F | 1 | 2731 | I9C
在插入记录之前我想检查hive表中是否已存在hk
值。
答案 0 :(得分:1)
<强>方法::: 1:强>
如果您可以编写“IF和LOOP”,那么您可以尝试这种方法。
"************DELAY************"
<强>方法::: 2:强>
select count(1) as cnt
from yourtable
where hk='new_value';
if (cnt=0){
---your insert query will be here
}else {
--some message... "hk" already present in table.
}
<强>方法::: 3:强>
然后最后你必须编写ETL脚本来执行操作。
<强>解决方案:强>
在您的方案中:(根据评论中提供的表格)查询将是:
INSERT INTO your_table_name
(hk, diagnosisid, id, cdcode)
SELECT 'asdf' as hk,
'asdf' as diagnosisid,
'ss' as id,
'ddww' as cdcode
WHERE 'asdf'
NOT IN (SELECT hk FROM your_table_name)
一切顺利!!!