Reputation: 34517
I know that you can get column names from a table via the following trick in hive:
hive> set hive.cli.print.header=true;
hive> select * from tablename;
Is it also possible to just get the column names from the table?
I dislike having to change a setting for something I only need once.
My current solution is the following:
hive> set hive.cli.print.header=true;
hive> select * from tablename;
hive> set hive.cli.print.header=false;
This seems too verbose and against the DRY-principle.
Upvotes: 61
Views: 181183
Reputation: 29
The solution is
show columns in table_name;
This is simpler than use
describe tablename;
Thanks a lot.
Upvotes: 1
Reputation: 59
Best way to do this is setting the below property:
set hive.cli.print.header=true;
set hive.resultset.use.unique.column.names=false;
Upvotes: -1
Reputation: 2095
use desc tablename
from Hive CLI or beeline to get all the column names. If you want the column names in a file then run the below command from the shell.
$ hive -e 'desc dbname.tablename;' > ~/columnnames.txt
where dbname
is the name of the Hive database where your table is residing
You can find the file columnnames.txt in your root directory.
$cd ~
$ls
Upvotes: 0
Reputation: 1093
you could also do show columns in $table
or see Hive, how do I retrieve all the database's tables columns for access to hive metadata
Upvotes: 71
Reputation: 1985
If you simply want to see the column names this one line should provide it without changing any settings:
describe database.tablename;
However, if that doesn't work for your version of hive this code will provide it, but your default database will now be the database you are using:
use database;
describe tablename;
Upvotes: 90