摘要:之前同事建表不太规范,没有建分区表,而是每天一个新的表,不同日期用表名后缀区分,每次想使用多个日期都需要大量的union all十分麻烦,而且大量union all操作又会占用大量driver内存,因此这些表是必然要改成分区表的,但是大量重复的操作去手动执行显然是不合适的,那么如何用shell脚本自动化执行呢?
#!/bin/bash
#脚本目标:将源表数据导入目标表中
#参数1:开始日期 参数2:结束日期
#源表(每天一个表): browser.detail_20200101等, browser.tidy_20200101等
#目标表(分区表):ods.ods_browser_detail(结尾有六个额外字段), ods.ods_browser_tidy
#ods_browser_detail字段过多且源表和目标表均为列式存储,查询和插入都会很慢
#操作的数据库:DB1源,DB2目标
DB1=browser
DB2=ods
#目标表名称
table1=ods_browser_detail
table2=ods_browser_tidy
#判断参数是否符合,如果第二个参数不为空并且两个参数长度都为8则进行下一步,否则退出
#&& [ `expr length $1` -eq 8 ] && [ `expr length $2` -eq 8 ]
if [ -n "$2" ] && [ ${#1} -eq 8 ] && [ ${#2} -eq 8 ]
#${#2}代表第二个参数的长度,其等价于`expr leng