只需从hive表中获取列名

can*_*his 38 sql hadoop hive

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

hive> set hive.cli.print.header=true;
hive> select * from tablename;
Run Code Online (Sandbox Code Playgroud)

是不是也有可能只是得到从表中的列名?

我不喜欢改变一个我只需要一次的设置.

我目前的解决方案如下:

hive> set hive.cli.print.header=true;
hive> select * from tablename;
hive> set hive.cli.print.header=false;
Run Code Online (Sandbox Code Playgroud)

这看起来过于冗长,反对DRY原则.

JJF*_*rd3 63

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

describe database.tablename;
Run Code Online (Sandbox Code Playgroud)

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

use database;
describe tablename;
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!但这还提供了有关分区等的更多信息,如何仅针对列名进行过滤呢? (2认同)

小智 53

您还可以执行show columns in $table或查看Hive,如何检索所有数据库的表列以访问Hive元数据

  • 这应该是问题的接受答案"是否可能**只是**获取列名",因为`describe`提供了额外的信息. (7认同)