Wednesday, December 16, 2009

Shell script to load any ldt file

This is a shell script that can load any ldt (FND or ALR standard) file. Just needs DB password and file name parameters and run from the location where the ldt resides.

#
#---------------------------------------------------------
# Shell to Load ldt files
#---------------------------------------------------------
# Parameters
# 1. Apps DB Password
# 2. Loader Data file name ldt
#---------------------------------------------------------
# Syntax
#---------------------------------------------------------
# LOAD_LDT_FILE_SH appsPassword ldt_name
# e.g.
#  LOAD_LDT_FILE_SH appsDB LDT_FILE_TO_LOAD.ldt
#---------------------------------------------------------
#

echo "Current Directory " `pwd`

db_pasw=$1
file_name=$2

file_path=""
prd_name=""
str_len=""
load_cmd=""

echo "============================================================="
is_ldt=`echo $file_name | grep ldt 2>/dev/null | wc -l`

if [ $is_ldt -eq 0 ]
then
  echo "Not Processing File " $file_name 2>/dev/null
  echo "============================================================="
else
  echo "Processing File " $file_name
  echo "============================================================="
  file_path=`grep -i lct $file_name 2>/dev/null | cut -f2 -d '@' | grep -i patch`
  if [ "$file_path" == "" ]
  then
    echo "Not Processing File " $file_name 2>/dev/null
  else
    echo "Start removing OLD log files "
    file_name_arr=( `grep -nicH $file_name *.log | grep -v ":0" | cut -f1 -d ':'` )
    file_count=${#file_name_arr[@]};

    for  ((  f = 0 ;  f < $file_count;  f++  ))
    do
       log_file_name=${file_name_arr[$f]}
       echo "Removing log file "$log_file_name
       rm $log_file_name
    done
    echo "End of removing OLD log files "
    echo "============================================================="
    prd_name=`echo $file_path | cut -f1 -d ':'`

    if [ "$prd_name" == "FND" ]
    then
       prd_name=`echo $FND_TOP`
    fi
    if [ "$prd_name" == "ALR" ]
    then
       prd_name=`echo $ALR_TOP`
    fi
    ## you can add more to above list as needed
    str_len=`expr index $file_path : + 1`
    file_path=`echo $file_path | cut -c$str_len-`
    ctrl_file=$prd_name"/"$file_path

    echo "Control File " $ctrl_file
    echo "============================================================="
    read_ctrl=`cat $ctrl_file | wc -l`
    if [ $read_ctrl -eq 0 ]
    then
     echo "Issue in control file read"
     echo "============================================================="
    else
      echo "Command to Load is "
      echo "FNDLOAD apps/db_pasw 0 Y UPLOAD "$prd_name"/"$file_path $file_name "CUSTOM_MODE=FORCE"
      echo "============================================================="
      echo "Start Load "
      load_output=`FNDLOAD apps"/"$db_pasw 0 Y UPLOAD $prd_name"/"$file_path $file_name CUSTOM_MODE=FORCE`
      echo "End Load"
      echo "============================================================="

      file_name_arr=( `grep -nicH $file_name *.log | grep -v ":0" | cut -f1 -d ':'` )
      file_count=${#file_name_arr[@]};

      for  ((  f = 0 ;  f < $file_count;  f++  ))
      do
         log_file_name=${file_name_arr[$f]}
         ln_error=`grep -icH error $log_file_name | grep -v ":0" | wc -l `
         if [ $ln_error -eq 0 ]
         then
           echo "Load is SUCCESS"
         else
           echo "Load FAILED"
         fi
         echo "============================================================="
         echo "Log file contents are "
         cat $log_file_name
      done
      echo "============================================================="
    fi
  fi
fi

No comments: