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

Hive 检查蜂巢表是否存在的最佳方法是什么?,hive,Hive,我心目中的选择: 火灾描述表 消防从表中选择1 如果表不存在,这些查询将失败 哪种方法更好?或者还有其他好方法吗?在许多情况下,我们可能不确定表存在于哪个数据库中,因此通常我们会在所有数据库中循环。为了节省时间,您可以使用下面的脚本。 用直线字符串替换$BEELINE_CONN_字符串,您可以将其保存为脚本并将表名称作为参数传递。要使搜索特定于某些数据库,您还可以在下面的代码中将show databases更改为show database like,或者将其作为参数传递给脚本 table_nam

我心目中的选择:

  • 火灾
    描述表

  • 消防<代码>从表中选择1

  • 如果表不存在,这些查询将失败


    哪种方法更好?或者还有其他好方法吗?

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

    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
    

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

    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
    

    显示“table\u name”之类的表
    请参阅您可以始终检查配置单元元存储TBLS表是否存在表。
    显示“table\u name”之类的表
    请参阅您可以始终检查配置单元元存储TBLS表是否存在表。