반응형
특정 SQL(HQL) 파일을 날짜별로 돌리고 싶은데 START 날짜와 END 날짜를 지정해두고 차례로 자동으로 돌아갔으면 좋겠다! 이런 니즈가 너무 너무 많다. 그럴 때는 아래처럼 sh 파일을 만들고 추가로 실행할 파일의 경로를 적어준다
#!/bin/bash
start_dt=`date +"%Y%m%d" -d ${1}`
end_dt=`date +"%Y%m%d" -d ${2}`
#start_dt=`date +"%Y%m%d" -d "20191101"`
#end_dt=`date +"%Y%m%d" -d "20191110"`
end_dt=`date +"%Y%m%d" -d "${end_dt} + 1 day"`
current_dt="$start_dt"
#echo "$start_dt"
#echo "$end_dt"
echo '----------------------------------------------'
echo 'start_dt : '$start_dt
echo 'end_dt : '$end_dt
echo 'current_dt : '$end_dt
echo '----------------------------------------------'
while [ $current_dt -ne $end_dt ]
do
echo "$current_dt"
# 실행파일
# bee --hivevar dt=$current_dt -f <hql file>
# sh <tmp.sh> $current_dt
current_dt=`date +"%Y%m%d" -d "${current_dt} + 1 day"`
done
나는 위의 파일을 주로 loop.sh 이라고 저장하는데, 저장한 후에 아래처럼 실행하면 2022-01-01 부터 2022-03-31 까지 지정한 파일이 차례대로 돌아가게 된다!
sh loop.sh '20220101' '20220331'
비슷한 논리를 이용해서 월별로 돌아가는 loop를 만들수도 있다.
#!/bin/bash
start_ym=`date +"%Y%m" -d ${1}`
end_ym=`date +"%Y%m" -d ${2}`
end_ym=`date +"%Y%m" -d "${end_ym} + 1 month"`
current_ym="$start_ym"
echo '----------------------------------------------'
echo 'start_ym : '$start_ym
echo 'end_ym : '$end_ym
echo 'current_ym : '$current_ym
echo '----------------------------------------------'
while [ $current_ym -ne $end_ym ]
do
echo "$current_ym"
# 실행파일
# bee --hivevar exec_ym=$current_ym -f <hql file>
# sh <tmp.sh> $current_ym
current_ym=`date +"%Y%m" -d "${current_ym}01 + 1 month"`
done
sh loop.sh '20220101' '20220331'
주별로 돌아가는 loop
#!/bin/bash
start_dt=`date +"%Y%m%d" -d ${1}`
end_dt=`date +"%Y%m%d" -d ${2}`
#start_dt=`date +"%Y%m%d" -d "20191101"`
#end_dt=`date +"%Y%m%d" -d "20191110"`
end_dt=`date +"%Y%m%d" -d "${end_dt} + 1 day"`
current_dt="$start_dt"
#echo "$start_dt"
#echo "$end_dt"
echo '----------------------------------------------'
echo 'start_dt : '$start_dt
echo 'end_dt : '$end_dt
echo 'current_dt : '$end_dt
echo '----------------------------------------------'
while [ $current_dt -le $end_dt ]
do
echo "$current_dt"
# 실행파일
# bee --hivevar dt=$current_dt -f <hql file>
# sh <tmp.sh> $current_dt
current_dt=`date +"%Y%m%d" -d "${current_dt} + 7 day"`
done
반응형
'ETC 코딩 > ETC' 카테고리의 다른 글
[Node] canvas 패키지 설치 실패 (0) | 2023.05.24 |
---|---|
사용중인 Port Kill (0) | 2023.05.17 |
mysql 에러 설치 Access denied for user 'root'@'localhost' (using password: YES) (0) | 2023.01.02 |
ngrok으로 내 로컬환경 다른 사람에게 공유하기 (0) | 2022.04.15 |
[vi] visual editor 개념 플러스 단축키 정리 (0) | 2021.11.11 |