2016-03-17 53 views
1

使用Hive我想在csv文件中獲得查詢結果,我也想要獲取標題。Hive,如何在輸出查詢時獲取列名(而不是table_name.column_name)

要做到這一點,我執行:

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 

回答

0

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 
+0

是的我知道我可以做到這一點,但我想一個蜂巢選項是availabe – user3636476

+0

@ user3636476高興你找到解決方案,但一個班輪不會傷害我猜:) – zack

6

我只是需要加入:

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

你可以通過添加解釋爲什麼這個作品。 – simbabque

+0

這個答案應該被評爲正確的答案。 –

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

0

你可以使用select列1,列2,從表名,而不是SELECT * FROM表名,在這種情況下,表名不會被添加到列名。 在這種情況下不需要提供sed命令。