查找Hive表中是否存在记录

时间:2018-05-09 07:32:42

标签: hive

我想在 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值。

1 个答案:

答案 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)

一切顺利!!!