使用文件名

时间:2016-08-02 10:06:09

标签: hive

我有一个用例,我从一堆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。

0 个答案:

没有答案