我正试图每天将数据从一个表复制到另一个表。
表A中有来自第三方的数据,然后我需要将它们添加到我的表中的任何新数据存储在其他位置:
因此:根据日期列,每天插入表A中所有不在表B中的记录。
这是我尝试过的方法,但是它几乎要花很多时间才能运行,而且看起来不太干净。
INSERT INTO table B
PARTITION (`date_col`)
SELECT col_1, date_col
FROM A
WHERE cast(`date_col` as date) NOT IN (select `date_col` from B);
我是否有一种干净有效的方法来做到这一点?我希望可以将表B的最大日期存储在一个变量中,然后执行以下操作:
WHERE cast(`date_col` as date) > max_date_of_table_B;
谢谢!
答案 0 :(得分:0)
请尝试一下。
set max_date='2018-12-31'; --whatever date you wanted to keep
INSERT INTO table B
PARTITION (`date_col`)
SELECT col_1, date_col
FROM A
WHERE cast(`date_col` as date) > ${hiveconf:max_date};