안녕하세요.
오늘은 greenplum의 GPDB에서 linux shell을 이용한 partition table 생성 하는 방법을
안내 합니다.
greenplum의 GPDB는 오라클 처럼 스케쥴러가 따로 없기 때문에
shell script를 많이 이용합니다. 물론 crontab과 함게 말이죠.
아래의 쉘 스크립트를 현재 상황에 맞게 잘 수정 하셔서 이용 한다면
GPDB partition table을 주기적으로 생성하는데 있어서 좋은 방안이 될 겁니다.
#!/bin/bash
START_TM1=`DATE "+%Y%m%d%H%M%S"`
LOADDATE=`date "+%Y%m%d%H%M%S"`
echo "us_partition_month_create.sh:START TIME : " $START_TM1
source ~/.bash_profile
BMT_NO=us_partition_month_create.sh
LOGDIR=/home/gpadmin/utilities/log
LOGFILE=/home/gpadmin/utilities/log/$BMT_NO"_"$LOADDATE".log"
NOW_DATE=`date "+%Y%m"`
DROP_DATE=`date -d '12 month ago' +"%Y%m"`
ADD_DATE=`date -d '2 month' +"%Y%m"`
ADD_START_DATE= `date -d '2 month' +"%Y-%m"`
ADD_END_DATE= `date -d '3 month' +"%Y-%m"`
echo $BMT_NO":Start Time:"$START_TM1 > $LOGFILE
for i in `psql -AtXf /home/gpadmin/utilities/shell/query/partition_month_table.sql`
do
SHEMA_NAME=`echo ${i} | awk 'BEGIN {FS="."}{print $1}'`
TABLE_NAME=`echo ${i} | awk 'BEGIN {FS="."}{print $2}'`
SQL="alter table ${SCHEMA_NAME}.${TABLE_NAME} drop partition if exists p${DROP_DATE};
alter table ${SCHEMA_NAME}.${TABLE_NAME} add partition p${ADD_DATE} START ('${ADD_START_DATE}-01 00:00:00'::timestamp without time zone) END ('${ADD_END_DATE}-01 00:00:00'::timestamp without time zone) WITH (appendonly=true, compresslevel=5, compresstype=zlib);"
psql -tX -ec "${SQL}" >> $LOGFILE 2>&1
done
END_TM1=`date "+%Y%m%d%H%M%S"`
echo $BMT_NO":End Time :"$END_TM1 >> $LOGFILE
echo "us_partition_month_create.sh: End Time : "$END_TM1
하시다가 모르는게 있으면 문의 바랍니다.
이상입니다!!
By. stricky
'Database > GPDB with BIG_data' 카테고리의 다른 글
[GPDB] 실시간 빅데이터 처리 DBMS 비교 Firebase Realtime Database vs GPDB (0) | 2020.01.09 |
---|---|
[greenplum]GPDB sequence cycle (0) | 2018.08.19 |
greenplum GPDB download 방법 (sandbox) (1) | 2018.08.17 |
GPDB 기본 명령어 [greenplum database] (0) | 2018.08.17 |
what is GPDB? 이게 뭘까? (0) | 2018.03.07 |