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 ...
随机推荐
- Oracle 11g 重建EM需要删除的对象
因为需求需要重建EM,重建时因为某些错误被迫停止,比如对象已存在.用户已经存在等,最终找出了创建必备的条件: 1.环境变量(Oracle和Grid在同一个用户下安装) ORACLE_HOME 要设为D ...
- response乱码和request乱码
response乱码 一.浏览器乱码 原因是:浏览器显示编码和文件的数据编码不一致 浏览器显示编码 response.setCharacterEncoding("utf-8"); ...
- vue项目引入第三方js插件,单个js文件引入成功,使用该插件方法时报错(问题已解决)
1.引入第三方js文件,npm安装不了 2.控制台显示引入成功 3.在methods下使用 图片看不清请看下面代码 updateTime() { setInterval(()=>{ var cd ...
- SimpleDateFormat是线程不安全的
线程不安全的SimpleDateFormat SimpleDateFormat是线程不安全的 SimpleDateFormat是Java提供的一个格式化和解析日期的工具类,日常开发中应该经常会用到,但 ...
- mysql基础操作记录
安装mysql Mac使用homebrew安装mysql,命令行执行以下命令:brew install mysql 启动mysql服务 安装完成后执行start 命令. ➜ ~ mysql.serve ...
- 浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系
名词介绍: 数据库:数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生 于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以 后,数据管理不再仅仅是存储和管理 ...
- webapi 跨域访问设置基于jsonp跨域
JSONP实现跨域 Web API并没有提供JSONP Formatter,但是这并不能影响我们前进的脚步,我们可以自定义Formatter来实现JSONP功能.既然是利用JSONP跨域,那么就得简 ...
- 关于iReport中纸张的大小 换算
在iReprot里中进行报表设计时 第一步先确定纸张的大小 如A4纸 直接选就行了 A2 A3一样的,但还会在这种情况这种纸没有选择的怎么办? 比如 那种代小孔的纸 279*241m ...
- [linux] 查看SATA速度和具体设备
查看SATA速度和具体设备 SATA 速度确认 方法一 dmesg |grep SATA 输出 [ 2.977661] ahci 0000:00:17.0: AHCI 0001.0301 32 slo ...
- Django ajax方法提交表单,及后端接受数据
前台代码: {% block content %} <div class="wrapper wrapper-content"> <div class=" ...