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?

Réponses:



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


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;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.