Comment obtenir / générer l'instruction create pour une table ruche existante?

90

En supposant que vous ayez déjà "table" dans Hive, y a-t-il un moyen rapide comme les autres bases de données de pouvoir obtenir l'instruction "CREATE" pour cette table?

Rolando
la source

Réponses:

200

À partir de Hive 0.10, ce patch-967 implémente SHOW CREATE TABLEce qui "montre l' CREATE TABLEinstruction qui crée une table donnée, ou l' CREATE VIEWinstruction qui crée une vue donnée."

Usage:

SHOW CREATE TABLE myTable;
Lukas Vermeer
la source
26

Étapes pour générer Créer des ddls de table pour toutes les tables de la base de données Hive et exporter dans un fichier texte pour une exécution ultérieure:

étape 1) créez un fichier .sh avec le contenu ci-dessous, par exemple 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"

étape 2) Exécutez le script shell ci-dessus en passant 'db name' comme paramètre

>bash hive_table_dd.sh <<databasename>>

production :

Toutes les instructions de création de table de votre base de données seront écrites dans le HiveTableDDL.txt

Aditya
la source
1
comment nous pourrions nous assurer que les seaux et le format de stockage seront répliqués dans une nouvelle table.
YouAreAwesome
Vous devez également ajouter un point-virgule après chaque instruction afin que le script puisse être exécuté en disant hive -f HiveTableDDL.txt.
Muton
Ce script échoue pour moi avec l'erreur ci-dessous: Erreur lors de la compilation de l'instruction: FAILED: La ligne ParseException 1:18 ne peut pas reconnaître l'entrée près de '|' '|' dans le nom de la table, j'exécute ce script avec beeline car HDP 3.0 ne prend pas en charge l'accès au shell-ruche
Abhinav
@cfeduke ce script donne l'emplacement des tables de la ruche. comment ignorer la partie de l'emplacement afin d'exécuter ces ddls dans un autre emplacement de la ruche? modifier sur plus de 1000 tables n'est pas possible
user1
2

Décrire formaté / étendu affichera la définition des données de la table dans la ruche

hive> describe Formatted dbname.tablename;
user2637464
la source