读取hive的表结构,生成带comment的视图建表语句
### 读取hive的表结构,生成带comment的视图建表语句 # 读取配置文件中的表并进行遍历 grep -v '^#' tablesFile|while read tableName do status=1 viewName=$(echo ${tableName}|sed "s/^dwd_/dwd_cms_out_l_/i"|sed "s/^dws_/dws_cms_out_l_/i"|sed "s/^ads_/ads_cms_out_l_/i") echo "-- tableName: ${tableName} | viewName: ${viewName}" # 查询HIVE中的表结构 hive -e "desc db_name.${tableName}" > desc_${tableName} # 将\t处理成| perl -i -npe 's/\x09/|/g' desc_${tableName} # 判断是否分区表 if [ $(grep '^| | ' desc_${tableName}|wc -l) -gt 0 ] then # 是分区表的处理方法 start_line=1 end_line=$((`grep -n "^| | " desc_${tableName}|awk -F':' '{print $1}'|head -1` - 1)) sed -n "${start_line},${end_line}p" desc_${tableName} > columns_${tableName} else # 不是分区表的处理方法 grep -v -E "col_name|WARN" desc_${tableName} > columns_${tableName} fi echo "create view ${viewName} (" grep -v -E "col_name|WARN" columns_${tableName}|awk '{print $1,"comment '\''"$3"'\''"}'|sed 's/|//g'|while read line do if [ ${status} -ne 1 ] then echo -n " ," echo "${line}" else echo " ${line}" fi status=$((${status}+1)) done echo ")" echo "as" echo "select * from ${tableName}" echo ";" done