2013-09-26 68 views
5

是否可以從表中檢索列名並將它們加載到另一個表或配置單元中的文本文件中?請讓我知道,如果我們能做到這一點Hive - 獲取列名

回答

6

沒有OOTB功能,允許這一點。但是你可以使用DESCRIBEAWK以實現:

bin/hive -S -e "use default; describe demo;" | awk -F" " '{print $1}' > ~/filename.txt 

更換默認演示與數據庫,你要操作的表。

+0

聲明 「沒有開箱即用的功能」 是言過其實。 [SHOW COLUMNS](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ShowColumns)自0.10版本以來一直在Hive中。 –

+0

@JosephCottam:提到OOTB時指出,沒有內置命令允許我們將列名導出到另一個表或文件中。如果你仍然覺得它被誇大了,隨意編輯答案。 – Tariq

3

另一種解決方案是使用hive.cli.print.headers =真

這是我在用的用於獲取標頭,逗號分隔。更換數據庫相應:

hive -S -e 'SET hive.cli.print.header=true; SELECT * FROM database.table LIMIT 0' | sed -e 's/\t/,/g' > headers.txt 
4

有點更簡潔的版本

hive -S -e "SHOW COLUMNS IN database_name.table_name" > column_names.txt