检查Hive表存在的最佳方法是什么?

时间:2016-02-16 10:38:31

标签: hive

我心中的选择:

  1. 点火DESCRIBE TABLE;

  2. 点火SELECT 1 FROM TABLE;

  3. 如果表不存在,这些查询将失败。

    哪种方式更好?还是有其他好方法吗?

1 个答案:

答案 0 :(得分:0)

在许多情况下,我们可能不确定表存在于哪个数据库中,因此通常我们会循环遍历所有数据库。为节省时间,您可以使用以下脚本。 用您的直线字符串替换$ BEELINE_CONN_STRING,您可以将其保存为脚本并将table_name作为参数传递。要使您的搜索特定于某些数据库,您还可以将以下代码中的show databases更改为show database like <your preferred database string>,或将其作为参数传递给脚本。

table_name=${1}
for database in `$BEELINE_CONN_STRING --showHeader=false --outputformat=tsv2 --silent=true -e "show databases;" 2> /dev/null `
do
result=`$BEELINE_CONN_STRING --silent=true --showHeader=false --outputformat=tsv2 -e "use $database;show tables like '*$table_name*';"  2> /dev/null `
if [[ "test_append"$result"" != "test_append" ]];
then
    echo "Table $result exists in $database"
else
    echo "Table not found in $database"
fi
done

示例输出类似于

Table not found in yourdb
Table www_table exists in mydb