##实例代码
#!/bin/bash cat ./switchSql.txt | while read line do tmp_partition_name=`echo $line | awk -F ' ' '{print $6}'` if [[ "$tmp_partition_name" = "" ]]; then continue fi start_flag=${tmp_partition_name:0:3} date_flag=${tmp_partition_name:((${#tmp_partition_name} - 6))} echo "${start_flag}${date_flag}" >> ./table_partition_date.txt done sort ./table_partition_date.txt | uniq > ./tpd_map.txt rm ./table_partition_date.txt declare -a partition_value_map=() OUTFILE=`cat ./tpd_map.txt` while read line do #业务数据后台查询,这里只模拟 part_flag="2" partition_value="170724" if [[ "$line" =~ "PD" ]]; then partition_value="170718" part_flag="1" fi if [[ "$line" =~ "PM" ]]; then partition_value="170801" part_flag="3" fi if [[ "$line" =~ "PY" ]]; then partition_value="180717" part_flag="4" fi date_flag=${line:((${#line} - 6))} partition_value_map["${part_flag}${date_flag}"]="${partition_value}" done <<EOF $OUTFILE EOF get_partition_high_value(){ partition_name=$1 part_flag="2" if [[ "$partition_name" =~ "PD" ]]; then part_flag="1" fi if [[ "$partition_name" =~ "PM" ]]; then part_flag="3" fi if [[ "$partition_name" =~ "PY" ]]; then part_flag="4" fi date_flag=${partition_name:((${#partition_name} - 6))} match_str="${part_flag}${date_flag}" high_value="" for key in ${!partition_value_map[@]} do if [ "$match_str" = "$key" ] ; then high_value="${partition_value_map[$key]}" break; fi done echo $high_value } high_value=`get_partition_high_value "PD_IND_H_1234_170717"` echo $high_value high_value=`get_partition_high_value "PW_IND_H_1234_170717"` echo $high_value high_value=`get_partition_high_value "PM_IND_H_1234_170701"` echo $high_value
##组织数据
alter table PM4H_DB.IND_M15_44 exchange partition PD_IND_M15_44_170717 with table PM4H_DB.PW_IND_M15_44_160704; alter table PM4H_DB.IND_2D_33_1 exchange partition PW_IND_2D_33_1_170717 with table PM4H_DB.PW_IND_2D_33_1_160704; alter table PM4H_DB.IND_2H_62_12 exchange partition PM_IND_2H_62_12_170701 with table PM4H_DB.PW_IND_2H_62_12_160704; exit;
##运行结果
pm22:/netwatcher/dbbackup> sh map.sh 170718 170724 170801
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。