hive 读取视图

作者: 堂哥000 | 来源:发表于2021-03-29 16:41 被阅读0次

    多人用同一个数据库,有人表名命名不规范导致视图和表无法分离开来,当想查看那些是表,那些是视图时,遇到了问题。网上有提供show views;命令,但是在当前的hive版本中正本不支持

    主要问题在于两点

    1. grep 做过滤默认为模糊匹配,需要添加 -w 参数
    2. 使用uniq -u 来过滤会有一部分隐藏文件和其它建的外表(已删除表)也会被输出
      代码如下
    #!/bin/bash
    . /etc/profile
    . ~/.bash_profile
    
    # 报错退出
    error() {
           if [[ $? != 0 ]]; then
           echo "$@  运行失败"
           #事务回滚机制
           exit 1
           fi
    }
    
    if [[ $1 = '' ]];then
      echo "请输入参数,脚本使用请输入 sh cat_view.sh  help"
    fi
    
    
    if [[ $1 = help ]];then
      echo "传入参数 数据库名"
      echo "功能: 查看某个数据库下有那些表是视图, 使用脚本单行串行使用"
      exit 0
    fi
    
    
    database_name=$1
    
    
    org_path="/data/view_file/"
    
    all_table="show tables in ${database_name}" 
    
    
    # 非视图表写入文件
    file_unview=${org_path}"unview_table_name.txt"
    hadoop fs -du -h /user/hive/warehouse/${database_name}.db/|awk -F'/' '{print $6}'  >  ${file_unview}
    error "提取费视图失败"
    
    # 所有表写入文件
    file_all_table=${org_path}"all_table_name.txt"
    sh ~/bee_u_e.sh "${all_table}"  >  ${file_all_table}
    error "提取所有表失败"
    
    # 输出视图表-表名
    # 文件2中的行 没有在文件1中出现 ,grep 为文件2 为主 -w 为全匹配
    
    grep -w -F -v -f ${file_unview} ${file_all_table} # 不加-w 则会模糊匹配,部分视图与表部分重复,输出丢失
    
    # cat ${file_unview} ${file_all_table} |sort |uniq -u   --- 此方法存在外表和隐藏文件BUG
    
    

    相关文章

      网友评论

        本文标题:hive 读取视图

        本文链接:https://www.haomeiwen.com/subject/ckbbhltx.html