开发者

sql from shell script

I have the below shell script in which sql file is called which has set of select and insert statements. Right now it's spooling output/error of the sql select /insert commands to the csv file. I want the output and error of the sql commands redirected to the shell script LOGFILE instead of spool file. How can i do it.

LOGPATH=${TEST_LOG}
LOGFILE=${SCRIPTNAME}.$(date '+%Y%m%d_%H%M%S').log

sql_test=${REPORT_HOME}/month_report.sql

exec > ${LOGPATH}/${LOGFILE} 2>&1

main "$@"

exit 0

main()
{   
    SPOOLTEST="${REPORT}/testreports/report_`date +%Y%m%d_%H%M%S`.csv"

    $ORACLE_HOME/bin/sqlplus -s << ENDSQL
                    ${DBLOGIN}@${DBNAME}
                    WHENEVER SQLERROR EXIT 1 ROLLBACK
                    WHENEVER OSERROR EXIT 1 ROLLBACK
                开发者_如何学运维    SPOOL ${SPOOLTEST}
                    @${sql_test}
                    SPOOL OFF
    ENDSQL

    return
}

spool logs after a delay. after shell script logs i am able to find the spool logs. I tried the below one it's not working $ORACLE_HOME/bin/sqlplus -s << ENDSQL >> ${LOGPATH}/${LOGFILE} 2>&1


I have no installation of Oracle client on this machine, but would not replacing

SPOOL ${SPOOLTEST}

with

SPOOL ${LOGPATH}/${LOGFILE}

work ?


when i do the below in shell script it writes to the logfiles SET TRIMSPOOL ON


There is no easy way to do this - the shell can't "tell" which is an error, as SQL*Plus writes everything to STDOUT. It only writes to STDERR if there is a failure in SQL*Plus itself. You will have to do this using a language that can connect to the DB directly (e.g. Perl, Python, etc etc) and process the query results as a structured result set, and raise/catch exceptions for errors.


#!/bin/bash


#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#Author:            Rachangouda                                                 @
#Script:         - Summary Data Cleanup Script                                      @
#Version:           v0.1                                                        @   
#Create date:           Sep 23 2014                                                 @
#Description:           Script to cleanup aggregation table data based on retention period. Required BIPs will be excluded as configured@
#               Cleanup will be done AFTER BCP OUT of all data. BCP files are stored under folder of naming convention:     @
#               <Tbl Name>_<dd_Mmm_yy of retention DATE>                                    @
#IMPORTANT:         Befor running this scripts please make sure that the below ENVIRONMENT VARIABLES are set.           @
#               Like:                                                       @
#               export ORACLE_HOME=/disk2/ORACLE11G/product/11.2.0/db_1/                            @
#               export PATH=$PATH:$ORACLE_HOME/bin                                      @
#               export ORACLE_SID=orcl11g                                           @
#                                                                       @
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

#Command LineArugments Parse
objArgs=$@ 
objArgs_lenth=$# #Length of Arguments passed to this script
ScriptName=$0 #this script name
FirstArg=$1 #Retention Days for all entity periods to be considered.
SecondArg=$2 #Clean up Flag value
NumMatch="^[0-9]+$"
clnupFlag="NO"
minRetentionDays=720; #Minimum retention days per site.
delBatch=100000; #Batch size for deleting table data. BE VERY CAUTIOUS with this value setting.

#Destination location where BCP OUT files will be archived and organized. This location should be write enabled for user which runs this script.
archivalLoc="/disk3/PROJECTS/Rachan"
#retentionDays=$FirstArg #Retention Days for all entity periods to be considered.

exclBIP="80,81,82,83,94,95,96,97,120,121,324999781,324999782" #BIP IDs that will be excluded from cleanup.
exclKATRealm="'whls-brighthouse','whls-brightlink','whls-brightlinkNE5','whls-comcasttsp','whls-comcasttspORIG'" #Realms to be excluded from KPI_AGGREGATED_TBL
###########   DataBase Details  ###############
USERNAME=dbusername
PASSWORD=paswd
SERVICE_ID=orcl11g


#### Command usage and  validation 
if [ "$objArgs_lenth" -eq "0" ] || [ "$objArgs_lenth" -gt "2" ]; then
        echo "Usage: "$ScriptName" <Retention Days greater than 364> [Script Mode]"
        echo "Set no second parameter (Script Mode), for BCP Only mode. Set second parameter as \"CLNUP\", to BCP and clean up data."
        exit 1
fi

if [ "$objArgs_lenth" -le "2" ]; then
    if [ $FirstArg != ${FirstArg//^[0-9]$/} ]; then
        echo "First is  Parameter (retention days) is Not a Number."
        exit 1
    fi
fi

if [ "$objArgs_lenth" -eq "2" ]; then
    clnupFlag=$SecondArg
    if [ $SecondArg=CLNUP -a "$FirstArg" -lt "$minRetentionDays" ]; then
        echo "Minimum retention days allowed = "$minRetentionDays", when Script Mode is \"CLNUP\"."
        echo "Example for using this utility: $0 720"
        echo "OR $0 720 CLNUP"
        exit 1
    fi

    #if [ $SecondArg != CLNUP ]; then
        #echo "Clean up Script Mode is \"CLNUP\". example: $0 720 CLNUP"
        #exit 1
    #fi

fi
###Command validation End

    ##Main Script Start

    # Foldercheck task
    if [ ! -d "$archivalLoc" ]; then
    echo "Destination Location mentioned below don't exist or not accessible: "$archivalLoc
    else    
        # Control will enter here if $DIRECTORY doesn't exist.
        echo "DESTINATION LOCATION = "$archivalLoc
        echo "Retention Days = "$FirstArg
        if [ $clnupFlag=CLNUP ]; then
            echo "Script Mode = BCP and CLEANUP.";
        else 
            echo "Script Mode = BCP ONLY.";
        fi
    fi

    #echo $USERNAME" "$PASSWORD" "$SERVICE_ID
        # Current date from DB
            currDate=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF LINESIZE 16 ECHO OFF;
                        select to_char(sysdate, 'DDMMYYYY') || '_' || to_char(sysdate, 'hhmmss') from dual;
            EXIT;
                        EOF`
    echo $currDate

    #$currDate="${currDate/\-/\_}"
    #currDate=`echo $currDate_oracle | sed -e 's/\-/\_/g'`
    echo "converted date is:"$currDate

    tskFolder=$archivalLoc"/"$currDate

    if [ ! -d "$tskFolder" ]; then
    echo "Folder is creating now";
    mkdir $tskFolder;
    echo "task folder is:"$tskFolder
    fi

    #retention date calculation
    retentionDate_oracle=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            select sysdate - $FirstArg from dual;
                        EXIT;
                        EOF`
    echo "calculated ret date is: "$retentionDate_oracle
    #During table creation Oracle Do not allow table names with "-",  date is converted from 01-sep-1 to 01_sep_14 
    retentionDate=`echo $retentionDate_oracle | sed -e 's/\-/\_/g'`
    echo "converted(01-sep-1 to 01_sep_14) retention date:"$retentionDate

    bcpSfx="_"$retentionDate
    echo "BCPFX is: "$bcpSfx

    #idsTbl Check and population
    idsTbl_lowercase="z_idsTbl_"$retentionDate
    echo "idsTbl value is: "$idsTbl_lowercase

    #Table presence check query works only on Upper case Table names
    idsTbl_uppercase=`echo $idsTbl_lowercase | tr '[:lower:]' '[:upper:]'`
    echo "idsTbl Upper Case val is:"$idsTbl_uppercase

    idsTbl=$idsTbl_uppercase

    echo "idsTbl value after upper case"$idsTbl

    #idsTbl presence check
    isTbl=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                        select object_id from user_objects where object_name = '$idsTbl';
            EXIT;
                        EOF`
    echo "isTbl flag value is:"$isTbl":"

    #If the table is present then isTbl Flag is set to some positive number else null
    if [ ! -z "$isTbl" ]; then    #-a "$isTbl" != " " ]; then
        echo "Reusing existing table: [idsTbl]"$idsTbl
    else
        echo "inside [$idsTbl] creation"
        ## IMPORTANT convert table name to upper case first
        sqlret_create1=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            CREATE TABLE $idsTbl (bip_id NUMBER(19), bpd_id NUMBER(19));
            CREATE INDEX bip_id_idx ON $idsTbl (bip_id asc);
            CREATE INDEX bpd_id_idx ON $idsTbl (bpd_id asc);
            EXIT;
                        EOF`
        if [ $? -ne 0 ]; then
            echo "SQLPLUS ERROR while creating [$idsTbl]"
            exit 1
        fi
    fi

    rowCount=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            SELECT count(*) FROM $idsTbl;
            EXIT;
            EOF`

    echo "First [$idsTbl] row count val:"$rowCount":"

    if [ "$rowCount" -eq "0" ]; then
        echo "inside INSERT EXCLUDED BIPS"
        sqlret_insert1=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            INSERT INTO $idsTbl SELECT DISTINCT bip.bip_id, bpd.bpd_id from bill_period bpd inner join bill_profile bip on bip.bip_id=bpd.bip_id where bip.bip_id not in ($exclBIP);
            COMMIT;
            EXIT;
                        EOF`
        if [ $? -ne 0 ]; then
            echo "SQLPLUS ERROR While inserting records into [$idsTbl]"
            exit 1
        fi  


        rowCount2=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            select count(*) from $idsTbl;
            EXIT;
            EOF`
        if [ "$rowCount2" -eq "0" ]; then
            echo "Zero BIP" 
            echo "Droping the Table[$idsTbl] and exiting"
            sqlret_drop1=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                            SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                DROP TABLE $idsTbl;
                COMMIT;
                EXIT;
                EOF`
            if [ $? -ne 0 ]; then
                echo "SQLPLUS ERROR while dropping table [$idsTbl].. Exiting from cleanup.."
                exit 1
            else 
                echo "Table [$idsTbl] is dropped sucessfully "
            fi
        fi
    fi



############  sssTbl Check and population 

    sssTbl_lowercase="z_sssTbl_"$retentionDate

    sssTbl_uppercase=`echo $sssTbl_lowercase | tr '[:lower:]' '[:upper:]'`
    echo "sssTbl Upper Case val is:"$sssTbl_uppercase

    sssTbl=$sssTbl_uppercase

    #idsTbl check
    issssTbl=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                        select object_id from user_objects where object_name = '$sssTbl';
            EXIT;
                        EOF`
    echo "issssTbl flag value is:"$issssTbl":"

    #If the table is present then issssTbl Flag is set to some positive number else null
    if [ ! -z "$issssTbl" ]; then    #-a "$isTbl" != " " ]; then
        echo "Reusing existing table: [$sssTbl]"

    else
        echo "inside '$sssTbl' table creation"
        ## IMPORTANT convert table name to upper case first
        sqlret_create2=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            CREATE TABLE $sssTbl (sss_id NUMBER(19));
            CREATE INDEX sss_id_idx ON $sssTbl (sss_id asc);
            EXIT;
                        EOF`

        echo "SSS_ID table and index created"

    fi

    echo "row counting for sss_id table"

    rowCount3=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
            SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            SELECT count(*) from $sssTbl;
            EXIT;
            EOF`

    echo "row count val for sss_id table:"$rowCount3

    if [ "$rowCount3" -eq "0" ]; then
        echo "row count for sss_id table is zero so inserting records from settlement_summary table"
        #echo "INSERT INTO $sssTbl SELECT DISTINCT sss.sss_id FROM AVEA_USG.SETTLEMENT_SUMMARY sss INNER JOIN AVEA_REF1.$idsTbl t1 ON t1.bip_id=sss.bip_id AND t1.bpd_id=sss.bpd_id where sss.evt_dttm < to_char(sysdate - $retentionDate_oracle);"

        sqlret_insert2=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
            INSERT INTO $sssTbl SELECT DISTINCT sss.sss_id FROM AVEA_USG.SETTLEMENT_SUMMARY sss INNER JOIN AVEA_REF1.$idsTbl t1 ON t1.bip_id=sss.bip_id AND t1.bpd_id=sss.bpd_id where sss.evt_dttm < to_char(sysdate - $FirstArg);
            COMMIT;
                        EXIT;
                        EOF`

        rowCount4=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                select count(*) from $sssTbl;
                EXIT;
                EOF`
        echo "Row count After inserting sss_id table with settlement_summary:"$rowCount2

        if [ "$rowCount4" -eq "0" ]; then
            echo "Zero SSS" 
            echo "Droping the Table[$sssTbl] and exiting"
            sqlret_drop2=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                            SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                drop table $sssTbl;
                commit;
                EXIT;
                EOF`

            if [ $? -ne 0 ]; then
                echo "SQLPLUS Error in dropping table [$sssTbl] Exiting from cleanup.."
                exit 1
            else 
                echo "Table [$sssTbl] is dropped sucessfully "
            fi      
        fi
    fi  


    #Array of Tables to be bcp'ed OUT and deleted.
    declare -a array=("01;idsTbl;$idsTbl;$tskFolder;$bcpSfx"

"02;sssTbl;$sssTbl;$tskFolder;$bcpSfx"

"03;SSE;AVEA_USG.settlement_summary_error where sse_id in (select distinct sss.sse_id from AVEA_USG.settlement_summary sss inner join $sssTbl t1 on t1.sss_id=sss.sss_id);$tskFolder;$bcpSfx"

"04;SSW;AVEA_USG.settlement_summary_work where sss_id in (select sss_id from $sssTbl);$tskFolder;$bcpSfx"

"05;SSS;AVEA_USG.settlement_summary where sss_id in (select sss_id from $sssTbl);$tskFolder;$bcpSfx"

"06;KPI;AVEA_REP.KPI_AGGREGATED_TBL where kat_id in (select distinct kat.kat_id from kpi_aggregated_tbl kat where kat.kat_realm not in ($exclKATRealm) and kat.evt_dttm < to_char(sysdate - $FirstArg));$tskFolder;$bcpSfx"

"07;RSM;AVEA_USG.report_summary where rsm_id in (select distinct rsm.rsm_id from AVEA_USG.report_summary rsm inner join $idsTbl t1 on t1.bip_id=rsm.bip_id and t1.bpd_id=rsm.bpd_id where rsm.rsm_dttm < to_char(sysdate - $FirstArg));$tskFolder;$bcpSfx"

"08;AIS;AVEA_USG.accruals_incoming_summary where ais_id in (select distinct ais.ais_id from AVEA_USG.accruals_incoming_summary ais inner join $idsTbl t1 on t1.bip_id=ais.bip_id and t1.bpd_id=ais.bpd_id where ais.ais_month < to_char(sysdate - $FirstArg));$tskFolder;$bcpSfx"

"09;ATS;AVEA_USG.accruals_its_summary where ats_id in (select distinct ats.ats_id from AVEA_USG.accruals_its_summary ats inner join $idsTbl t1 on (t1.bip_id=ats.ats_in_bip_id or t1.bip_id=ats.ats_out_bip_id) and (t1.bpd_id=ats.ats_in_bpd_id or t1.bpd_id=ats.ats_out_bpd_id) where ats.ats_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"10;AOS;AVEA_USG.accruals_outgoing_summary where aos_id in (select distinct aos.aos_id from AVEA_USG.accruals_outgoing_summary aos inner join $idsTbl t1 on t1.bip_id=aos.aos_out_bip_id and t1.bpd_id=aos.aos_out_bpd_id where aos.aos_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"11;ARD;AVEA_USG.accruals_rated_detail where ard_id in (select distinct ard.ard_id from AVEA_USG.accruals_rated_detail ard inner join $idsTbl t1 on t1.bip_id=ard.bip_id and t1.bpd_id=ard.bpd_id where ard.ard_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"12;ARDW;AVEA_USG.accruals_rated_detail_work where ard_id in (select distinct ardw.ard_id from AVEA_USG.accruals_rated_detail_work ardw inner join $idsTbl t1 on t1.bip_id=ardw.bip_id and t1.bpd_id=ardw.bpd_id where ardw.ard_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"13;DAS;AVEA_USG.daily_accruals_summary where das_id in (select distinct das.das_id from AVEA_USG.daily_accruals_summary das inner join $idsTbl t1 on (t1.bip_id=das.das_in_bip_id or t1.bip_id=das.das_out_bip_id) and (t1.bpd_id=das.das_in_bpd_id or t1.bpd_id=das.das_out_bpd_id) where das.das_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"14;DES;AVEA_USG.daily_estimated_summary where des_id in (select distinct des.des_id from AVEA_USG.daily_estimated_summary des inner join $idsTbl t1 on (t1.bip_id=des.des_in_bip_id or t1.bip_id=des.des_out_bip_id) and (t1.bpd_id=des.des_in_bpd_id or t1.bpd_id=des.des_out_bpd_id) where des.des_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"15;DPS;AVEA_USG.daily_projection_summary where dps_id in (select distinct dps.dps_id from AVEA_USG.daily_projection_summary dps inner join $idsTbl t1 on (t1.bip_id=dps.dps_in_bip_id or t1.bip_id=dps.dps_out_bip_id) and (t1.bpd_id=dps.dps_in_bpd_id or t1.bpd_id=dps.dps_out_bpd_id) where dps.dps_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"16;ESM;AVEA_USG.estimate_suspense_summary where esm_id in (select distinct esm.esm_id from AVEA_USG.estimate_suspense_summary esm inner join $idsTbl t1 on t1.bip_id=esm.bip_id and t1.bpd_id=esm.bpd_id where esm.esm_evt_dttm < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"17;EDS;AVEA_USG.ext_amts_daily_summary where eds_id in (select distinct eds.eds_id from AVEA_USG.ext_amts_daily_summary eds inner join $idsTbl t1 on t1.bip_id=eds.bip_id where eds.eds_date < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"18;HMN;AVEA_USG.hourly_margin where hmn_id in (select distinct hmn.hmn_id from AVEA_USG.hourly_margin hmn where hmn.hmn_evt_hour < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"19;ITS;AVEA_USG.incoming_traffic_summary where its_id in (select distinct its.its_id from AVEA_USG.incoming_traffic_summary its inner join $idsTbl t1 on t1.bip_id=its.bip_id and t1.bpd_id=its.bpd_id where its.its_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"20;TTS;AVEA_USG.its_traffic_summary where tts_id in (select distinct tts.tts_id from AVEA_USG.its_traffic_summary tts inner join $idsTbl t1 on (t1.bip_id=tts.tts_in_bip_id or t1.bip_id=tts.tts_out_bip_id) and (t1.bpd_id=tts.tts_in_bpd_id or t1.bpd_id=tts.tts_out_bpd_id) where tts.tts_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"21;OTS;AVEA_USG.outgoing_traffic_summary where ots_id in (select distinct ots.ots_id from AVEA_USG.outgoing_traffic_summary ots inner join $idsTbl t1 on t1.bip_id=ots.ots_out_bip_id and t1.bpd_id=ots.ots_out_bpd_id where ots.ots_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx"

"22;PRD;AVEA_USG.projection_rated_detail where prd_id in (select distinct prd.prd_id from AVEA_USG.projection_rated_detail prd inner join $idsTbl t1 on t1.bip_id=prd.bip_id where prd.prd_month < (sysdate - $FirstArg));$tskFolder;$bcpSfx");

    #array declaration

    #SPOOL AND ZIPPING PROCESS BEGINS
    spoolOffTbl ()
    {
        echo "inside spool function"
        var=$1 
        order=`echo $var | awk -F';' '{ printf $1}'` #Extracting Order value from input param
        tblSfx=`echo $var | awk -F';' '{ printf $2}'` #Extracting Table Suffix value from input param
        tblWhere=`echo $var | awk -F';' '{ printf $3}'` #Extracting Query value from input param
        targetFolder=`echo $var | awk -F';' '{print $4 }'` #Extracting Traget folder value from input param
        bcpSuffix=`echo $var | awk -F';' '{print $5}'`  #Extracting Table suffix value from input param

        Folder="$targetFolder/$order$tblSfx$bcpSuffix.bcp"
        #echo $order
        #echo $tblSfx
        #echo $tblWhere
        #echo $targetFolder
        #echo $bcpSuffix
        # IMPORTANT DO NOT ECHO THE QUERY IN TERMINAL       
        #echo "SPOOL stdout on to $targetFolder/$order"_"$tblSfx$bcpSuffix.bcp"     
        echo "Spooled files stored in the Folder:"$archivalLoc
        spoolret=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                SET PAGESIZE 0 LINESIZE 3000 TRIMOUT ON TRIMSPOOL ON TAB OFF WRAP OFF VERIFY OFF ECHO OFF HEADING OFF FEEDBACK OFF TERMOUT OFF;
                SPOOL $Folder
                            SET COLSEP ","
                select * from $tblWhere;
                SPOOL OFF
                EXIT;
                                EOF`
            if [ $? -ne 0 ]; then
                echo "ERROR! SQL*Plus failed..."
                exit 1
            else 
                echo "zipping started"
                #zip <Options> <NameOfZippingFolder> <FromDirectory>
                #Option -r is for recursivly checks files to be zipped

                zip -r $targetFolder $targetFolder
                echo "zipping end"

                if [ $? -ne 0 ]; then
                    echo "Error occured during Zipping"
                    exit 1
                else
                    if [ -f $Folder ]; then
                    rm -r $Folder
                    fi
                fi

            fi
    }
    #Iterating the array
    for i in "${array[@]}"
    do
        #echo "printing first array"
        #echo $i IMPORTANT ALWAYS pass ARRAY ARGUMENT INSIDE DOUBLE QUOTE TO METHOD otherwise string break when empty space is encountered
        spoolOffTbl "$i"

        if [ $? == 1 ]; then 
            echo "error in Spool Off and Zipping"
            exit 1
        fi

        echo "Spool off is done"
    done
    #SPOOL AND ZIPPING PROCESS ENDS

    #CLEANUP BEGINS
    clnupTbl ()
    {
        echo "inside Clean Up function..."
        var=$1
        tblWhere=`echo $var | awk -F';' '{ printf $3}'`

        Folder="$targetFolder/$order$tblSfx$bcpSuffix.bcp"
        cleanupret=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                declare v_cnt number;
                                begin
                                select count(*) into v_cnt from $tblWhere and rownum = 1;
                                while (v_cnt > 0)LOOP
                                delete from $tblWhere and rownum <= $delBatch;
                                commit;
                                select count(*) into v_cnt from $tblWhere and rownum = 1;
                                end LOOP;
                                end;
                EXIT;
                                EOF`
        if [ $? -ne 0 ]; then
            echo "ERROR! SQL*Plus failed..."
            exit 1
        else 
            echo "Clean Up is Done"
        fi

    }

    if [ "$clnupFlag" == "CLNUP" ]; then
        echo "Clean up is starting..."

        for i in "${array[@]}"
        do
            clnupTbl "$i"

            if [ $? == 1 ]; then 
                echo "Error in table data cleanup:"
                exit 1
            fi

        echo "Data Cleanup is done"

        done
    fi

    #CLEANUP ENDS
    #DROP TABLE $idsTbl; COMMIT;
    final_dropidsTbl=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                            SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                EXIT;
                EOF`

            if [ $? -ne 0 ]; then
                echo "SQLPLUS Error in dropping table [$idsTbl]"
                exit 1
            else 
                echo "Table [$idsTbl] is dropped sucessfully"
            fi
    #add drop query DROP TABLE $sssTbl; COMMIT;
    final_dropsssTbl=`sqlplus -s -l $USERNAME/$PASSWORD@$SERVICE_ID <<EOF
                            SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF;
                EXIT;
                EOF`

            if [ $? -ne 0 ]; then
                echo "SQLPLUS Error in dropping table [$sssTbl]"
                exit 1
            else 
                echo "Table [$sssTbl] is dropped sucessfully "
            fi

    echo "Settlement summery Clean Up is completed"

#Main script

#Following Bill Profiles are excluded from Summary Cleanup: Refer to var exclBIP.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜