shell map使用
# 定义初始化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使用的更多相关文章
- shell map数据结构的实现
前言 Bash默认不支持二维数组,如果我们想实现map 数据结构,可以安装如下的方式来进行构造 预备知识 eval: 它是shell内建命令,用于字符串的解析.它会首先扫描命令行 ...
- Hadoop高级培训课程大纲-管理员版
一.课程概述 本次培训课程主要面向大数据系统管理人员和开发设计人员,基于开源社区大数据应用最活跃的Hadoop和HBase技术框架.围绕分布式文件存储(HDFS).分布式并行计算(Map/Recue) ...
- Hadoop高级培训课程大纲-开发者版
一.课程概述 本次培训课程主要面向大数据系统管理人员和开发设计人员,基于开源社区大数据应用最活跃的Hadoop和HBase技术框架,围绕分布式文件存储(HDFS).分布式并行计算(Map/Recue) ...
- vim 配置.vimrc文件
下面这个.vimrc文件是根据公司里的一个前辈配置的,这里记录下,方便以后使用.它的功能,其实跟网上很多.vimrc配置的相比,还是小儿科.我记录下来,主要还是因为自己已经习惯了这个工作环境跟快捷键. ...
- Shell中map的使用
Shell中的map与array有很多的相似之处,array操作:https://www.cnblogs.com/qq931399960/p/10786111.html 一.在使用map时,需要先声明 ...
- Linux Shell管道调用用户定义函数(使shell支持map函数式特性)
Linux中有一个管道的概念,常用来流式的处理文本内容,比如一个文件对其中的每一行应用好几个操作,出于两个方面的考虑可能需要在管道中使用用户定义函数: 1. 刚需: 内置的sed/awk之类的可能没法 ...
- Linux Shell:Map的用法
Map定义: 在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明 方式1: declare -A myMap myMap[" 方式2: declare -A myMap ...
- Linux Shell:根据指定的文件列表 或 map配置,进行文件位置转移
读取配置文件,进行文件位置转移 在whenb.csv中指定了需要从/home/root/cf/下移除到/home/root/cf_wh/下文件列表,whenb.csv中包含记录如下: enb- enb ...
- MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程
在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...
随机推荐
- jdk1.7 环境变量配置
Windows系统中设置环境变量如下图右击“我的电脑”,选择“属性”. 点击“高级”选项卡,选择“环境变量”. 在“系统环境变量”中设置上面提到的3个环境变量,如果变量已经存在就选择“编辑”,否则选 ...
- [GO]channel实现同步
goroutine运行在相同的地址空间,因此访问共享内存必须 做好同步.goroutine奉行通过通信来共享内存,而不是共享内存通信 它跟map一样,使用make来创建,它是一个引用 ,而不是值传递 ...
- OSG图形设备接口GraphicsContext
1.图形设备与相机 在Camera类的成员函数中,setGraphicContext()函数的工作是设置相机对应的图形设备对象,换句话说,下面要介绍的GraphicsContext类就是图形设备对象的 ...
- C#和C++语言使用方面的区别
本人觉得C#是世界上最优美的语言,也可以说是一门傻瓜语言,入门成本低,上手快得到许多人的青睐,但是C#并没有在行业内得到大家的首肯,反倒是C/C++人才比较紧俏:本人在学习过程中将C#和C++语言使用 ...
- HttpAnalyzerStdV7使用教程
相关链接:HttpAnalyzerStdV7安装教程 1.1.使用HttpAnalyzerStdV7监控服务器返回消息 1.运行前关闭要监控的浏览器. 2.运行软件: 3.点击"Start& ...
- JS 封装的结构关系
/* -- 封装 -- */var _packaging = function() { //私有属性和方法 var age = "12"; var method1 = functi ...
- 结构光和ToF
- [Lua快速了解一下]Lua的函数
-recurrsive function fib(n) end ) + fib(n - ) end -closure 示例一 function newCounter() return function ...
- CodeForces 834D The Bakery(线段树优化DP)
Some time ago Slastyona the Sweetmaid decided to open her own bakery! She bought required ingredient ...
- 搭建IntelliJ IDEA授权服务
废话不多,直接开始 下载IntelliJ IDEA授权服务软件v1.4 密码:mu3t 下载IntelliJ IDEA授权服务软件v1.3 密码:1odn 选择你自己服务器的版本,我这里选择Intel ...