2017-01-12 52 views
2

可以使用Hive相关问题的一些帮助。将整个csv文件的内容加载到Hive表中的单个列中

我想将整个csv文件加载到单列Hive表中。文件中的每个条目都应该是Hive表中的单个行。我试图改变行格式 - 专门尝试改为LINES TERMINATED BY','而不是'\ n'。但是,目前只支持'\ n'字符。它目前是JIRA问题(https://issues.apache.org/jira/browse/HIVE-11996)。

我目前唯一的想法是用\ n通过linux命令替换文件中的逗号,但是我想看看是否有人可以提出一些其他值得考虑的解决方案。

在此先感谢!

回答

1

您可以在Hive中创建一个临时表,然后选择每个列。让我们在HDFS “/tmp/test.csv” 测试文件与此内容:

COL1,COL2,COL3

COL4,COL5,COL6

COL7,col8,col9

如果创建临时表:

CREATE TABLE tmp_csv(c1 STRING, c2 STRING, c3 STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","; 

LOAD DATA INPATH '/tmp/test.csv' OVERWRITE INTO TABLE tmp_csv; 

然后你就可以与重建表以下:

CREATE TABLE final_csv AS SELECT * FROM 
( SELECT t1.c1 as col FROM tmp_csv t1 
    UNION ALL 
    SELECT t2.c2 as col FROM tmp_csv t2 
    UNION ALL 
    SELECT t3.c3 as col FROM tmp_csv t3 
)combined;  

表final_csv的内容是这样的:

col1 
col4 
col7 
col2 
col5 
col8 
col3 
col6 
col9 
相关问题