Вы находитесь на странице: 1из 4

# /bin/ksh

################################################################################
#####
################################################################################
#####
# CreateInfaPar.sh
# Version 1.0
# Description: This script will create Informatica Paramater file
################################################################################
#####
################################################################################
#####
# Modification History
# 31052010 - Santanu Guha (1.0) - Original Script
# 05082010 - Santanu Guha - updated SQL query in script to add load_run_number a
s this
# is required to select peoplesoft GL data based on ru
n sequence
# number,Defect-362
# 12082010 - Santanu Guha -Updated the logic to make the script dynamic.
# 03092010 - Santanu Guha -Updated the Script to overwrite parameter file.
################################################################################
#####
################################################################################
#####
LOGFILENAME=CreateInfaPar.log
LOGFILE=$LOGFILENAME
time=`date +%H%M%S`
log()
{
LOG_QUESTION=$*
echo "`date`: ${LOG_QUESTION}" >> ${LOGFILE}
echo "log ${LOG_QUESTION}"
echo " "
}
echo " "
if [ $# -lt 2 ]; then
log "ERROR: This script accepts two parameters as root directory "
echo "ERROR: This script accepts two parameters as root directory "
echo " "
echo " "
exit 1
fi
# assign $PMRootDir
export basedir=$1
# assign $PMRepositoryServiceName
export repository=$2
LOGFILE=$basedir/$LOGFILENAME
##### Read Config file for login credentials ##########
if [ "$repository" = "$DI_INT_REP" ]; then
uid=$DICONTROLUSER
pwd=$DICONTROLPWD
dbms=$DI_INT_SID
elif [ "$repository" = "$VAL_INT_REP" ]; then
uid=$VALCONTROLUSER
pwd=$VALCONTROLPWD
dbms=$VAL_INT_SID
else
uid=$INFCONTROLUSER
pwd=$INFCONTROLPWD
dbms=$INT_SID
fi
#if [ -r "$basedir/Env/.InfaENV_config" ]; then
# . $basedir/Env/.InfaENV_config
# uid=$user_id
# pwd=$password
# dbms=$database
#else
# log "$basedir/Env/.InfaENV_config file does not exist"
# exit 1
#fi
if [ -z "$uid" ]; then
log "uid is null"
exit 1
fi
if [ -z "$pwd" ]; then
log "pwd is null"
exit 1
fi
if [ -z "$dbms" ]; then
log "pwd is null"
exit 1
fi
reject=`sqlplus -s $uid@$dbms/$pwd << EOF
set colsep ,
set linesize 400
set echo off
set feedback off
set trimspool on
set headsep off
set pagesize 0
SPOOL ON
SPOOL $basedir/Bin/wf_register.sql
Select workflow_name ||','||session_name||','||parameter_name||','||parameter_va
lue
from(
select
wf.workflow_name,wf.session_name,wf.parameter_name,wf.parameter_value
from
(SELECT workflow_name ,
(case when worklet_name is null then session_name else 'CO_MIGRATIONS.WF:'||work
flow_name||'.WT:'||worklet_name end) session_name,parameter_name,parameter_value
FROM ETL_WORKFLOW_REGISTER where folder_name is null order by workflow_name,sess
ion_name)wf -- Changed by Hiten
UNION ALL
select wf.workflow_name ,wf.session_name,
Max('From_Date') Parameter_Name ,
Max(to_char(nvl(erb.from_date, to_date('01/01/1900 00:00:00', 'MM/DD/YYYY HH24:M
I:SS')),'MM/DD/YYYY HH24:MI:SS')) Parameter_Value
FROM ETL_WORKFLOW_REGISTER wf,
(Select load_program_name as mapping_name, max(start_date_time) as from_date
from etl_run_book
where status = 'S'
group by load_program_name) erb
where substr(wf.session_name,2)=substr(erb.mapping_name(+),2)
and folder_name is null -- Changed by Hiten
GROUP BY wf.workflow_name ,wf.session_name
UNION ALL
select wf.workflow_name ,wf.session_name, Max('Load_Run_Number') Parameter_Name
, Max(to_char(nvl(erb.load_run_number,0))) Parameter_Value
FROM ETL_WORKFLOW_REGISTER wf,
(Select load_program_name as mapping_name, max(load_run_number) as load_run_numb
er
from etl_run_book
where status = 'S'
group by load_program_name) erb
where substr(wf.session_name,2)=substr(erb.mapping_name(+),2)
and folder_name is null -- Changed by Hiten
GROUP BY wf.workflow_name ,wf.session_name
)
order by workflow_name,session_name;
SPOOL OFF
EXIT;
EOF`
if echo $reject | grep ERROR:; then
log "SQLPLUS ERROR"
log "$reject"
exit 1
elif echo $reject | grep ORA-; then
log "SQLPLUS ERROR"
log "$reject"
exit 1
fi
if [ -z "$reject" ]; then
log "No data is extracted from database"
exit 1
fi
if [ -r "$basedir/Bin/wf_register.sql" ]; then
: #ignore
else
log "$basedir/Bin/wf_register.sql file does not exist"
exit 1
fi

awk 'BEGIN { FS = "," ; OFS="," }; { if ( $3 !~ /DBConnection/) {print "WORKFLOW


_NAME="$1,$2,"$$"$3"="$4};}
{ if ( $3 ~ /DBConnection/) {print "WORKFLOW_NAME="$1,$2,"$"$3"="$4};}' $basedir
/Bin/wf_register.sql > $basedir/Bin/wf_register.new
awk '{ FS = "," } {if( $2 == prev ) { printf ",%s", $3 } else { printf "\n%s,%s,
%s", $1, "["$2"]", $3; prev=$2; } }END {printf "\n"}' $basedir/Bin/wf_register.n
ew > $basedir/Bin/wf_register.new1
awk 'BEGIN {RS="\n" ; FS=","} { for (i=1;i<=NF;i++) {x="1END1"; print $i }; prin
t x}' $basedir/Bin/wf_register.new1 > $basedir/Bin/wf_register.new2
if [ -r "$basedir/Bin/wf_register.new2" ]; then
: #ignore
else
log "$basedir/Bin/wf_register.new2 file does not exist"
exit 1
fi
filename=""
while read line
do
if echo $line | grep WORKFLOW_NAME=; then
line_no=`echo $line | sed 's/WORKFLOW_NAME=//g'`
if [ "$filename" != "$line_no" ]; then
filename=$line_no
rm -rf $basedir/ParamFiles/"$line_no".pmf # Changed by Hiten
fi
elif echo $line | grep 1END1; then
: #ignore
else
echo "$line" >> $basedir/ParamFiles/"$line_no".pmf
touch $basedir/TriggerFiles/"$line_no".tag
fi
done < $basedir/Bin/wf_register.new2
rm -rf $basedir/Bin/wf_register.sql
rm -rf $basedir/Bin/wf_register.new
rm -rf $basedir/Bin/wf_register.new1
rm -rf $basedir/Bin/wf_register.new2
exit 0

Вам также может понравиться