# 定义初始化map
declare -A map=([""]="" [""]="") # 输出所有key
echo ${map[@]} # 输出key对应的值
echo ${map[""]} # 遍历map
for key in ${!map[@]}
do
echo ${map[${key}]}
done
#!/bin/bash
#********************************************************************#
##author:郭昊
##create time:-- ::
#********************************************************************#
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"]="" ["b"]="" ["c"]="" ["d"]="" ["e"]="") ### 主函数
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"
else
upload_2 "${typeTenants}" "${sql_excute}" "check_id,check_desc,type,sql_txt,db_name,error_cnt" "check_erroer_data_result" "bigdata_db"
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='业务异常数据巡检结果表'
;

shell map使用的更多相关文章

  1. shell map数据结构的实现

    前言     Bash默认不支持二维数组,如果我们想实现map 数据结构,可以安装如下的方式来进行构造   预备知识     eval:  它是shell内建命令,用于字符串的解析.它会首先扫描命令行 ...

  2. Hadoop高级培训课程大纲-管理员版

    一.课程概述 本次培训课程主要面向大数据系统管理人员和开发设计人员,基于开源社区大数据应用最活跃的Hadoop和HBase技术框架.围绕分布式文件存储(HDFS).分布式并行计算(Map/Recue) ...

  3. Hadoop高级培训课程大纲-开发者版

    一.课程概述 本次培训课程主要面向大数据系统管理人员和开发设计人员,基于开源社区大数据应用最活跃的Hadoop和HBase技术框架,围绕分布式文件存储(HDFS).分布式并行计算(Map/Recue) ...

  4. vim 配置.vimrc文件

    下面这个.vimrc文件是根据公司里的一个前辈配置的,这里记录下,方便以后使用.它的功能,其实跟网上很多.vimrc配置的相比,还是小儿科.我记录下来,主要还是因为自己已经习惯了这个工作环境跟快捷键. ...

  5. Shell中map的使用

    Shell中的map与array有很多的相似之处,array操作:https://www.cnblogs.com/qq931399960/p/10786111.html 一.在使用map时,需要先声明 ...

  6. Linux Shell管道调用用户定义函数(使shell支持map函数式特性)

    Linux中有一个管道的概念,常用来流式的处理文本内容,比如一个文件对其中的每一行应用好几个操作,出于两个方面的考虑可能需要在管道中使用用户定义函数: 1. 刚需: 内置的sed/awk之类的可能没法 ...

  7. Linux Shell:Map的用法

    Map定义: 在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明 方式1: declare -A myMap myMap[" 方式2: declare -A myMap ...

  8. Linux Shell:根据指定的文件列表 或 map配置,进行文件位置转移

    读取配置文件,进行文件位置转移 在whenb.csv中指定了需要从/home/root/cf/下移除到/home/root/cf_wh/下文件列表,whenb.csv中包含记录如下: enb- enb ...

  9. MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程

    在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...

随机推荐

  1. 常用工具类——StringUtils

    /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreem ...

  2. sklearn中的随机森林

    阅读了Python的sklearn包中随机森林的代码实现,做了一些笔记. sklearn中的随机森林是基于RandomForestClassifier类实现的,它的原型是 class RandomFo ...

  3. Ubuntu14.04下 安装xhprof

    1.下载xhprof包: wget http://pecl.php.net/get/xhprof-0.9.4.tgz 2.解压 进入扩展目录 .tgz cd /home/justphp/xhprof- ...

  4. Linux中找不到service命令

    解决方法: 1.su -l root su root:的话只是将当前身份转为root,用户shell并没有改变.所以有些系统命令不能使用.  su -或者su -l或者su -l root,可以完全的 ...

  5. 学习python5面向

    类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减 ...

  6. 使用ffmpeg+crtmpserver搭建文件的伪直播

    Tutorial: How to "live stream" a media file 如何"直播"一个媒体文件 I have tried a while to ...

  7. no getter for property named 'power_state

    错误信息:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for pr ...

  8. jQuery控制iframe框架内元素

    用jQuery在IFRAME里取得父窗口的某个元素的值只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮$(window.frames[" ...

  9. Reporting Service服务SharePoint集成模式安装配置(9、PowerPivot for SharePoint 安装配置详细)

    PowerPivot for SharePoint 增加了对发布到 SharePoint 中的 PowerPivot 工作簿的协作和文档管理支持. PowerPivot for SharePoint ...

  10. [LeetCode 题解]: Permutations

    Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...