hive 讀取視圖

多人用同一個數(shù)據(jù)庫,有人表名命名不規(guī)范導致視圖和表無法分離開來,當想查看那些是表,那些是視圖時,遇到了問題。網(wǎng)上有提供show views;命令,但是在當前的hive版本中正本不支持

主要問題在于兩點

  1. grep 做過濾默認為模糊匹配,需要添加 -w 參數(shù)
  2. 使用uniq -u 來過濾會有一部分隱藏文件和其它建的外表(已刪除表)也會被輸出
    代碼如下
#!/bin/bash
. /etc/profile
. ~/.bash_profile

# 報錯退出
error() {
       if [[ $? != 0 ]]; then
       echo "$@  運行失敗"
       #事務(wù)回滾機制
       exit 1
       fi
}

if [[ $1 = '' ]];then
  echo "請輸入?yún)?shù),腳本使用請輸入 sh cat_view.sh  help"
fi


if [[ $1 = help ]];then
  echo "傳入?yún)?shù) 數(shù)據(jù)庫名"
  echo "功能: 查看某個數(shù)據(jù)庫下有那些表是視圖, 使用腳本單行串行使用"
  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中出現(xiàn) ,grep 為文件2 為主 -w 為全匹配

grep -w -F -v -f ${file_unview} ${file_all_table} # 不加-w 則會模糊匹配,部分視圖與表部分重復,輸出丟失

# cat ${file_unview} ${file_all_table} |sort |uniq -u   --- 此方法存在外表和隱藏文件BUG

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容