查看hive库下那些表是视图

多人用同一个数据库,有人表名命名不规范导致视图和表无法分离开来,当想查看那些是表,那些是视图时,遇到了问题。网上有提供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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值