Hive,输出查询时如何获取列名(而不是table_name.column_name)

时间:2016-03-17 07:15:08

标签: csv header hive columnname

使用Hive我想在csv文件中获取查询结果,我也想得到标题。

要实现这一点,我正在执行:

hive -e '
    use database;
    set hive.cli.print.header=true;
    select * from table;
' > /home/centos/user/result.csv

但是csv的第一行是:

table.field1_name,table.field2_name,table.field3_name

我怎样才能获得内容:

field1_name,field2_name,field3_name

4 个答案:

答案 0 :(得分:11)

我只需要添加:

set hive.resultset.use.unique.column.names=false;

答案 1 :(得分:0)

body.send_keys(Keys.COMMAND + 't') 将完成这项工作。

假设sed包含以下内容:

fun.csv

然后我在命令行中执行以下操作:

table.field1_name,table.field2_name,table.field3_name

现在sed -e 's/table.//g' < fun.csv > fun2.csv 有:

fun2.csv

答案 2 :(得分:0)

我用

hive -e 'set hive.cli.print.header=true; select * from database.table;' | sed 's/[\t]/,/g' > /your_path_to_csv

它适用于我。

参考: Hive query output delimiter

答案 3 :(得分:0)

您可以使用tablename中的select column1,column2而不是select * from tablename,在这种情况下,tablename将不会添加到列名中。 在那种情况下,不需要给出sed命令。