只需从hive表中获取列名

时间:2014-10-03 14:59:16

标签: sql hadoop hive

我知道您可以通过hive中的以下技巧从表中获取列名:

hive> set hive.cli.print.header=true;
hive> select * from tablename;

是否也可以从表中获取列名?

我不喜欢为一些我需要的东西更改设置。

我目前的解决方案如下:

hive> set hive.cli.print.header=true;
hive> select * from tablename;
hive> set hive.cli.print.header=false;

这似乎过于冗长,反对DRY原则。

5 个答案:

答案 0 :(得分:57)

如果您只是想查看列名,则该行应该提供它而不更改任何设置:

describe database.tablename;

但是,如果这对您的hive版本不起作用,则此代码将提供它,但您的默认数据库现在将是您正在使用的数据库:

use database;
describe tablename;

答案 1 :(得分:49)

您也可以show columns in $table或查看Hive, how do I retrieve all the database's tables columns来访问hive元数据

答案 2 :(得分:0)

使用Hive CLI中的desc tablename或直线获取所有列名称。如果要在文件中使用列名,请从shell运行以下命令。

$ hive -e 'desc dbname.tablename;' > ~/columnnames.txt

其中dbname是您的表所在的Hive数据库的名称 您可以在根目录中找到文件columnnames.txt。

$cd ~
$ls

答案 3 :(得分:-1)

解决办法是

use show columns in table_name;

这比

更简单
use describe tablename;

非常感谢。

答案 4 :(得分:-2)

最好的方法是设置以下属性:

set hive.cli.print.header=true;
set hive.resultset.use.unique.column.names=false;