Assuming you have "table" already in Hive, is there a quick way like other databases to be able to get the "CREATE" statement for that table?
Asked
Active
Viewed 2.1e+01k times
111
-
SHOW CREATE TABLE 'Table_Name'; – cool Quazi Mar 10 '23 at 09:19
4 Answers
239
As of Hive 0.10 this patch-967 implements SHOW CREATE TABLE
which "shows the CREATE TABLE
statement that creates a given table, or the CREATE VIEW
statement that creates a given view."
Usage:
SHOW CREATE TABLE myTable;

Lukas Vermeer
- 5,920
- 2
- 16
- 19
34
Steps to generate Create table DDLs for all the tables in the Hive database and export into text file to run later:
step 1)
create a .sh
file with the below content, say hive_table_ddl.sh
#!/bin/bash
rm -f tableNames.txt
rm -f HiveTableDDL.txt
hive -e "use $1; show tables;" > tableNames.txt
wait
cat tableNames.txt |while read LINE
do
hive -e "use $1;show create table $LINE;" >>HiveTableDDL.txt
echo -e "\n" >> HiveTableDDL.txt
done
rm -f tableNames.txt
echo "Table DDL generated"
step 2)
Run the above shell script by passing 'db name' as paramanter
>bash hive_table_dd.sh <<databasename>>
output :
All the create table statements of your DB will be written into the HiveTableDDL.txt

Vladislav Varslavans
- 2,775
- 4
- 18
- 33

Aditya
- 2,385
- 18
- 25
-
1how we could make sure that the buckets and storage format will going to be replicate into new table. – Indrajeet Gour Dec 19 '17 at 05:43
-
You should also append a semicolon after each statement so that the script can be executed by saying hive -f HiveTableDDL.txt. – Muton Apr 16 '18 at 11:02
-
This script is failing for me with the below error: Error while compiling statement: FAILED: ParseException line 1:18 cannot recognize input near '|' '|' in table name I am executing this script with beeline as HDP 3.0 does not support hive-shell access – Abhinav Mar 19 '19 at 20:00
-
@cfeduke this script gives the location of hive tables. how to skip location part inorder to run these ddls in another hive location ? alter on more than 1000 tables is not possible – user1 Jun 05 '20 at 16:59
2
Describe Formatted/Extended will show the data definition of the table in hive
hive> describe Formatted dbname.tablename;

Stu Thompson
- 38,370
- 19
- 110
- 156

user2637464
- 2,366
- 1
- 14
- 5
1
# !/bin/bash
for DB in `beeline --showHeader=false --outputformat=tsv2 -e "show databases;"`
do
for Tab in `beeline --showHeader=false --outputformat=tsv2 -e "use $DB; show tables;"`
do
beeline --showHeader=false --outputformat=tsv2 -e "show create table $DB.$Tab;" >$DB.$Tab.hql
done
done

Abhishek Suryawanshi
- 11
- 2
-
this code will give you all tables DDL from all databases – Abhishek Suryawanshi Aug 02 '22 at 06:56
-
Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Aug 03 '22 at 23:22