Comment trouver un nom de colonne particulier dans toutes les tables de Hive?
J'ai exécuté cette requête dans Hive: select table_name,column_name from retail.columns where column_name like '%emp%';
( retail est une base de données).
Mais c'est donner:
erreur FAILED: SemanticException Line 0: -1 Table non trouvée 'colonnes'
J'ai essayé la requête: select distinct table_name from default.columns where column_name = 'emp'
( default est la base de données de la mine). Mais c'est aussi donner une erreur.
J'ai cherché sur ceux-ci, j'ai eu quelle requête j'ai écrit c'est pour les bases de données SQL.
Mais je veux chercher dans la base de données Hive? Comment entrer en ruche?
La même question a déjà été posée, mais j'estime que les choses pourraient avoir changé et qu'il pourrait y avoir une solution directe:
ci-dessous le script shell vous donnera le résultat souhaité:
Hive -S -e 'show databases'|
while read database
do
eval "Hive -S -e 'show tables in $database'"|
while read line
do
if eval "Hive -S -e 'describe $database.$line'"| grep -q "<column_name"; then
output="Required table name: $database.$line"'\n';
else
output=""'\n';
fi
echo -e "$output"
done
done
Voici la requête que vous pouvez utiliser sur le métastore:
sélectionnez TBL_NAME, COLUMN_NAME, TYPE_NAME dans TBLS et rejoignez COLUMNS_V2 sur CD_ID = TBL_ID où COLUMN_NAME ressemble à 'colonne';
où 'colonne' est le nom de la colonne que vous recherchez.