我有一个用例,我从一堆csv文件构建一个hive表。在将csv信息写入hive表时,我将INPUT__FILE__NAME
(名称的一部分)分配给其中一列。当我想更新相同文件名的记录时,我需要在再次写入之前删除csv
文件的记录。
我使用以下查询但失败了
CREATE EXTERNAL TABLE T_TEMP_CSV(
F_FRAME_RANK BIGINT,
F_FRAME_RATE BIGINT,
F_SOURCE STRING,
F_PARAMETER STRING,
F_RECORDEDVALUE STRING,
F_VALIDITY INT,
F_VALIDITY_INTERPRETATION STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ';'
location '/user/baamarna5617/HUMS/csv'
TBLPROPERTIES ("skip.header.line.count"="2");
DELETE FROM T_RECORD
WHERE T_RECORD.F_SESSION = split(reverse(split(reverse(T_TEMP_CSV.INPUT__FILE__NAME),"/")[0]), "[.]")[0]
from T_TEMP_CSV;
T_RECORD
表有一个名为F_SESSION
的列,使用上面显示的拆分方法为INPUT__FILE__NAME
分配了一部分。我想在删除这些记录时使用相同的方法。有人可以指点我在这个查询中出错吗?
我可以使用以下语法
成功删除记录 DELETE FROM T_RECORD
WHERE F_SESSION = 68;
我需要从INPUT_FILE_NAME
获得68。