HIVE-将select语句的结果作为多个记录插入到hive表中,而不会覆盖现有内容

问题描述 投票:1回答:1

我有以下命令的表:

CREATE TABLE treatment_costs AS SELECT * FROM 
(SELECT r.patient_id, r.transaction_date, r.paid_transaction_amount, o.dob, o. department_name, o.reason_of_visit FROM ReceiptTransactions r
LEFT OUTER JOIN OpdPatientQ o ON (r.patient_id = o.patient_id)
);

我现在想将今天(在给定日期)插入的所有记录插入上表。为此,我写了:

INSERT INTO TABLE treatment_costs SELECT * FROM
(SELECT r.patient_id, r.transaction_date, r.paid_transaction_amount, o.dob, o. department_name, o.reason_of_visit FROM ReceiptTransactions r WHERE timestamp_column = today_date
LEFT OUTER JOIN OpdPatientQ o ON (r.patient_id = o.patient_id)
);

这是在表中插入多个查询的正确方法吗?

hadoop hive left-join hiveql
1个回答
0
投票
摘自Hive Language Manual

INSERT INTO将追加到表或分区,并保持现有数据完整。

INSERT INTO TABLE ...

将不会覆盖表中已经存在的任何数据。您具有的INSERT查询将运行MapReduce(基于引擎类型)作业,该作业会将新生成的文件写入表位置,而不删除现有文件。 
© www.soinside.com 2019 - 2024. All rights reserved.