繁体   English   中英

将 csv 文件的全部内容加载到 Hive 表的单列中

[英]Loading entire content of a csv file into a single column in a Hive table

可以对 Hive 相关问题使用一些帮助。

我正在尝试将整个 csv 文件加载到单列 Hive 表中。 文件中的每个条目都应该是 Hive 表中的一行。 我尝试更改 ROW FORMAT - 特别是尝试更改为 LINES TERMINATED BY ',' 而不是 '\\n'。 但是,目前仅支持 '\\n' 字符。 它目前是一个 JIRA 问题( https://issues.apache.org/jira/browse/HIVE-11996 )。

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

提前致谢!

您可以在 Hive 中创建一个临时表,然后分开选择每一列。 让我们在 HDFS "/tmp/test.csv" 中创建一个包含以下内容的测试文件:

列 1、列 2、列 3

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM