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

eulz3vhy  于 2023-03-27  发布在  Hive
关注(0)|答案(4)|浏览(232)

使用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

如何获得Insead:

field1_name,field2_name,field3_name
pxyaymoc

pxyaymoc1#

我只需要补充一下:

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

f3temu5u2#

sed将完成这项工作。
假设fun.csv包含以下内容:

table.field1_name,table.field2_name,table.field3_name

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

sed -e 's/table.//g' < fun.csv > fun2.csv

现在fun2.csv有:

field1_name,field2_name,field3_name
nlejzf6q

nlejzf6q3#

你可以使用select column1,column2 from tablename代替select * from tablename,在这种情况下tablename不会被添加到列名中。在这种情况下不需要给予sed命令。

tjjdgumg

tjjdgumg4#

我用

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

对我来说效果很好。
参考:Hive query output delimiter

相关问题