Vous êtes sur la page 1sur 4

#

#***************************************************************
#!/bin/ksh
echo `date +'%m_%d_%y%h:%m:%s'` "******************begin of bteq
task******************* "

stage_database="$1"
stage_table="$2"
target_database="$3"
target_table="$4"
bteq_file="$5"
rpt_data="$6"

# check if all the parameters are passed

if [ $# -eq 6 ] && [ $rpt_data = "rpt" -o $rpt_data = "rpt" ]


then
rpt_pass=$idw_cmd/idwpass_rpt
echo `date +'%m_%d_%y%h:%m:%s'` "rpt data is present"
else
rpt_pass=$idw_cmd/idwpass
echo `date +'%m_%d_%y%h:%m:%s'` "rpt data is not present"
fi

# check for the connection string file idwpass or idwpass_rpt


if [ -f $rpt_pass ]
then
echo `date +'%m_%d_%y%h:%m:%s'` "file found: " $rpt_pass
else
echo `date +'%m_%d_%y%h:%m:%s'` "error idw_ins_sel_bore.ksh: $rpt_pass
not found"
exit 1
fi

echo "get the max(dw_eff_dt) from $target_database.$target_table"


max_date_file=/opt/idw/pr/data/max_date.dat
rm -f $max_date_file

bteq <<eofbteq
`/bin/cat $rpt_pass`
.export file=$max_date_file
sel coalesce(max(dw_eff_dt),cast('0001-01-01'as date)) (format 'yyyymmdd') (title
'') from $target_database.$target_table;
.export reset
.quit;
eofbteq
# catch the return code
err1=$?
if [ $err1 -ne 0 ]
then
echo `date +'%m_%d_%y%h:%m:%s'` "error while getting max(dw_eff_dt) from
$target_database.target_table"
exit 1
else
echo `date +'%m_%d_%y%h:%m:%s'` "max(dw_eff_dt) exported successfully"
fi
#put in a variable the max date
max_date=`/bin/cat $max_date_file`
echo "max_date = $max_date"
if [ $max_date == '00010101' ]
then
echo "no max_date in $target_database.$target_table"
else
echo "get the 3rd business day of the month of max(dw_eff_dt)"
business_day3_file=/opt/idw/pr/data/business3.dat

rm -f $business_day3_file

bteq <<eofbteq
`/bin/cat $rpt_pass`
.export file=$business_day3_file

sel calendar_date (format 'yyyymmdd') (title '')from


(
sel
calendar_date
,month_day_number
,rank(month_day_number asc) as business_day
,month_number
,day_of_week,holiday
,business_week_end_day
,business_month_end_day
from $target_database.date_dim_t
where
cast(year_month as char(6))= substring('$max_date' from 1 for 6) and
holiday = 0
qualify business_day = 3 ) t;

.export reset
.quit;
eofbteq

# catch the return code


err1=$?
if [ $err1 -ne 0 ]
then
echo `date +'%m_%d_%y%h:%m:%s'` "error while getting 3rd business day from
date_dim_t "
exit 1
else
echo `date +'%m_%d_%y%h:%m:%s'` "3rd busines day exported successfully"
fi

business_day3=`/bin/cat $business_day3_file`

if [ -z $business_day3 ]
then
echo "error in retrieving 3rd business day from the date dimension table"
exit 1
else
echo "3rd business day =$business_day3"
fi

if [ $max_date == $business_day3 ]
then
echo "max date from monthly table same as the 3rd business day for the month"
else
bkp=$target_table'_bk'
bteq<<eofbteq
`/bin/cat $rpt_pass`
.set errorlevel 3108 severity 0;
drop table $stage_database.$bkp;
.set errorlevel 3108 severity 8;

create table $stage_database.$bkp as $target_database.$target_table


with no data;

.if errorcode !=0 then .quit errorcode;

insert into $stage_database.$bkp


sel * from $target_database.$target_table
where dw_eff_dt = cast('$max_date' as date format 'yyyymmdd');

.if errorcode !=0 then .quit errorcode;

delete from $target_database.$target_table


where dw_eff_dt = cast('$max_date' as date format 'yyyymmdd');

.if errorcode !=0 then .quit errorcode;


.quit;
eofbteq

# catch the return code


err1=$?
if [ $err1 -ne 0 ]
then
echo `date +'%m_%d_%y%h:%m:%s'` "error while deleting records of
date:$max_date from $target_database.$target_table "
exit 1
else
echo `date +'%m_%d_%y%h:%m:%s'` "records of date: $max_date deleted from
$target_database.$target_table"
fi
fi #end of test condition max=bus3
fi # end of loop which test if max_date is not null

#load records from staging to target table


temp_bteq=$idw_logs/reorg_recon/stg_idw_ins_sel_detl_tmp.bteq
comb_bteq=$temp_bteq"_pass"
rm -f $temp_bteq
rm -f $comb_bteq
# replace the database variable names

echo `date +'%m_%d_%y%h:%m:%s'` "replacing varibales in bteq script"

sed -e "s/\$stage_database/$stage_database/g" -e
"s/\$target_database/$target_database/g" $bteq_file >$temp_bteq

# concatenate passwd file and temp bteq file to a combined temp file
cat $rpt_pass $temp_bteq > $comb_bteq
# call bteq to load target table

echo "start of loading target table $target_table"

bteq <$comb_bteq

# catch the return code


err1=$?

#remove the temp files before exiting


rm -f $temp_bteq
rm -f $comb_bteq

if [ $err1 -ne 0 ]
then
echo `date +'%m_%d_%y%h:%m:%s'` "error while loading records from staging
table to target table"
exit 1
else
echo `date +'%m_%d_%y%h:%m:%s'` "records loaded from stage table to target
table $target_database.$target_table"
fi
echo `date +'%m_%d_%y%h:%m:%s'` "****************end of bteq task ***************
"

Vous aimerez peut-être aussi