본문 바로가기

Database/GPDB with BIG_data

GPDB 에서 linux shell script를 이용하여 partition table 생성 하기

안녕하세요.

 

오늘은 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

 

하시다가 모르는게 있으면 문의 바랍니다.

이상입니다!!

Image result for greenplum

By. stricky