2017-06-02 63 views
1

我想从下面的配置单元表中导出数据,但它生成的文件带有制表符作为分隔符。导出时可以将分隔符指定为逗号或制表符吗?配置单元-e带分隔符

hive -e " 
use default; 
set hive.cli.print.header=true; 
select * from test1; 
    " > /temp/test.txt (or .csv) 

感谢 Ĵ

+1

[出口蜂巢表到CSV在HDFS]的可能的复制(https://开头计算器。 com/questions/30224875/exporting-hive-table-to-csv-in-hdfs) – alejandrogiron

回答

1

可以通过管道将您的数据,并使用一个简单的sed命令将数据转换为所需的输出格式。在sed命令下面用逗号替换选项卡。默认输出是Tab。您可以相应地更改输出。

hive -e "use default;set hive.cli.print.header=true;select * from test1;" | sed 's/[\t]/,/g' >/temp/test.csv 
+0

谢谢Prabhat。我确实尝试了sed命令,我看到的是它在标签的末尾加逗号.ike ABC,123,2016,..而不是命令,如果我想用pipe作为分隔符,我可以使用? – sam

+0

hive -e“use default; set hive.cli.print.header = true; select * from test1;” | sed's/[\ t]/|/g'> /temp/test.csv 这将替换管道标签 –

0

或者到@Prabhat Ratnala解决方案,这是确定的,你可以使用这个:

INSERT OVERWRITE LOCAL DIRECTORY '/temp/your_dir' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * FROM test1;

+0

谢谢..我之前尝试过,使用插入覆盖,它调用地图红色作业并且它创建文件 – sam

+0

的多个拆分当然,然后您使用cat将它们全部合并到一个文件中。 – Andrew

+0

许多文件,但完全平行 – leftjoin