IDS_IDT_LOAD_ANY_ENTITY.sh

The following sample SQL script can be used for incremental data load.

Note: Use this file for UNIX.
#!/bin/bash
#################################################################################
# Prerequisite check block                              #
#################################################################################
# Checking IIR system variables are set. If not then throw error and exit.
if [ -z "$SSABIN" ] && [ -z "$SSATOP" ]
then
   echo "Err #LOAD-01: Informatica IIR system variables not set. Please use 'idsset' 
script"
   exit
else
   # checking if required idsbatch utility exists at $SSABIN location
   if [ -f $SSABIN/idsbatch ]
   then 
      echo "idsbatch utility found."
   fi
fi
#################################################################################
# Param block                                             #
#################################################################################
# INPUT PARAMETERS 
   current=$1
   workdir=$2
   dbcredentials=$3
# ENVIRONMENT RELATED PARAMETERS
#  scriptdir=/export/home/qa1/InformaticaIR/initloadscripts
#  informaticadir=/export/home/qa1/InformaticaIR
   scriptdir=$SSATOP/initloadscripts
   =$SSATOP
# DEBUG OPTION - 1 for ON and 0 for OFF
   debug=1
   
# Passing DB credentials as argument
# ISS DATABASE CREDENTIALS and CONNECT INFO
#  dbcredentials=ora32155/ora32155@sdchs20n532_qa532a
   dbcredentials=$3
# MACHINE NAME
   machineName=`hostname`
#################################################################################
# Execution block                                         #
#################################################################################
if [ $debug -eq 1 ]; then
   echo using Script dir: $scriptdir
   using Informatica Home: $informaticadir
fi
if [ $# -lt 3 ]
then
   echo "Err #LOAD-03: Error in $0 - Invalid Argument Count"
   echo Usage LoadAnyEntity "<Entity Account,Contact or Prospect> <WorkDir> <dbuser/
dbpass@tnsname> [Optional Batch Number]"
   echo Insufficient parameters
   echo e.g "Syntax: $0 Entity_name  Account  Log_directory  /temp"
   exit
fi
if [ -f $scriptdir/idt_$current\_load.txt ] 
   then
   if [ $debug -eq 1 ]; then
      echo Using Load file $scriptdir/idt_$current\_load.txt
   fi
   else
   Load file cannot be loaded. Please check and rerun process
fi
if [ $# -eq 4 ]
   then
   Specific bath to be loaded: $4
fi
if [  -d $workdir ]; then
   cd $workdir
   rm -r -f *.err
fi
if [ $# -eq 3 ] 
   then 
   read_sql_stmt() {
   typeset stmt=$1
   typeset login=$2
   
   echo "
      set feedback off verify off heading off pagesize 0
      $stmt;
      exit 
      " |  sqlplus -s  $login
   }
   
   read_sql_stmt "select max(batch_num) from "$current"s_SNAPSHOT_VIEW" 
"$dbcredentials" | while read u 
   do
   
   batches=$u
   
   counter=2
   if [ $debug -eq 1 ]; then
      echo current=$current 
      echo workdir=$workdir 
      echo counter=$counter
      echo number of batches to be processed is: $batches
   fi
   
#  for counter in $(seq 2 $batches);
   for ((counter=2; counter <= $batches; counter++));
   
currentbatch=$(
sqlplus -S $dbcredentials <<!
set head off feedback off echo off pages 0
UPDATE IDS_IDT_CURRENT_BATCH set batch_num=$counter
/
select batch_num from IDS_IDT_CURRENT_BATCH
/
!
   echo 
   echo 
   echo "#########################################"
   echo "# Curently Processing Batch: $currentbatch     #"
   echo "#########################################"
   cd $informaticadir/bin
   if [ $debug -eq 1 ]; then
   echo InformaticaDrive: ${PWD}
      echo Processing following command:
      echo idsbatch -h$machineName:1669 -i$scriptdir/idt_$current\_load.txt -1$workdir/
idt_$current\_load$counter.log -2$workdir/idt_$current\_load$counter.err -
3$workdir\idt_$current\_load$counter.dbg
      echo "#########################################"
   fi
   idsbatch -h$machineName:1669 -i$scriptdir/idt_$current\_load.txt -1$workdir/
idt_$current\_load$counter.log -2$workdir/idt_$current\_load$counter.err -
3$workdir\idt_$current\_load$counter.dbg
   done
   done
else
   counter=$4
   echo "#########################################"
   echo Processing Batch $4....
   currentbatch=$(
         sqlplus -S $dbcredentials <<!
         set head off feedback off echo off pages 0
         UPDATE IDS_IDT_CURRENT_BATCH set batch_num=$counter
         /
         select batch_num from IDS_IDT_CURRENT_BATCH
         /
         !
         )
   echo "#########################################"
   cd $informaticadrive/bin
   idsbatch -h$machineName:1669 -i$scriptdir/idt_$current\_load.txt -1$workdir/
idt_$current\_load$counter.log -2$workdir/idt_$current\_load$counter.err -
3$workdir\idt_$current\_load$counter.dbg
fi
   echo "Process completed. Please examine error and log files in "$workdir
   # errorcnt=0
if [  -d $workdir ]; then
   cd $workdir
fi
   errorcnt=$(find ./ -depth 1 -name "*.err" ! -size 0 | wc -l)
echo Errors encountered is: $errorcnt
if [ $errorcnt -eq 0 ]; then
   echo Successfully processed all the batches
   else
   echo #########################################
   echo # Failed batch report  #
   echo #########################################
   echo $errorcnt batch/es have failed. Please check the following batches:
   find ./ -depth 1 -name "*.err"
fi