# 定义初始化map declare -A map=(["100"]="1" ["200"]="2") # 输出所有key echo ${map[@]} # 输出key对应的值 echo ${map["100"]} # 遍历map for key in ${!map[@]} do echo ${map[${key}]} done
#!/bin/bash #********************************************************************# ##author:郭昊 ##create time:2019-04-03 14:09:17 #********************************************************************# source /webser/odps/shell/odps.sh ### 定义变量 confSql="select concat_ws('|',check_id,check_desc,type,sql_txt) as flag from check_erroer_data_config where is_deleted = 0" typeMap=(["a"]="1" ["b"]="2" ["c"]="3" ["d"]="4" ["e"]="5") ### 主函数 main(){ # 清空结果表历史数据 db_query_retant "bigdata_db" "truncate table check_erroer_data_result" # 遍历配置表里的记录 db_query_retant "bigdata_db" "${confSql}"|sed '1d'|while read line do check_id=$(echo ${line}|awk -F'|' '{print $1}') check_desc=$(echo ${line}|awk -F'|' '{print $2}') type=$(echo ${line}|awk -F'|' '{print $3}') sql_txt=$(echo ${line}|awk -F'|' '{print $4}') # 处理单引号 sql=$(echo ${sql_txt}|sed "s/'/''/g") # 处理执行语句 sql_excute=$(echo ${sql_txt}|sed "s/select/select ${check_id} as check_id,'${check_desc}' as check_desc,'${type}' as type,'${sql}' as sql_txt,DATABASE() as db_name,/i") echo "${sql}" echo "${sql_excute}" # 获取key对应的值 typeTenants=${typeMap[${type}]} # 统计异常数据量 if [ "${typeTenants}" != "" ] then if [ "${type}" == "gcxt" ] then upload_1 "${typeTenants}" "${sql_excute}" "check_id,check_desc,type,sql_txt,db_name,error_cnt" "check_erroer_data_result" "bigdata_db" 0 else upload_2 "${typeTenants}" "${sql_excute}" "check_id,check_desc,type,sql_txt,db_name,error_cnt" "check_erroer_data_result" "bigdata_db" 0 fi else echo "[ERROR] Type: [ ${type} ] not match,Please check again" fi done # 删除正常的记录 db_query_retant "bigdata_db" "delete from check_erroer_data_result where error_cnt = 0" } ### 运行主函数 main
-- 表结构设计 use bigdata_db; -- 配置表 drop table check_erroer_data_config; create table check_erroer_data_config( check_id tinyint primary key auto_increment comment '检查项序号' ,check_desc varchar(500) not null comment '检查项描述' ,type varchar(100) not null comment '检查项类型' ,sql_txt varchar(1000) not null comment '检查SQL' ,is_deleted tinyint default 0 comment '是否已删除' )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='业务异常数据巡检配置表' ; -- 结果表 drop table check_erroer_data_result; create table check_erroer_data_result( check_id tinyint not null comment '检查项序号' ,check_desc varchar(500) not null comment '检查项描述' ,type varchar(100) not null comment '检查项类型' ,db_name varchar(50) not null comment '检查数据库名' ,sql_txt varchar(1000) not null comment '检查SQL' ,error_cnt int(11) default 0 comment '异常记录数' ,update_time timestamp DEFAULT CURRENT_TIMESTAMP not null comment '更新时间' ,primary key(db_name,check_id) ,KEY `ix_error_cnt` (`error_cnt`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='业务异常数据巡检结果表' ;