# # Shell Script per caricamento dati # # #!/usr/bin/ksh # set -x THIS_PATH=`dirname $0` . $THIS_PATH/setEnv.sh $THIS_PATH/TestNodo.sh if [ $? -eq 0 ] then # ESECUZIONE SCRIPT # directory in cui sono presenti i files control (CTL) CMD=${MNP_SCRIPT_CMD_HOME} #directory in cui sono presenti i file dati DAT=${MNP_GWMNP_HOME}/FILEIN #directory in cui eseguire il backup dei file acquisiti correttamente BACKUP_SIMBA=${MNP_GWMNP_HOME}/backup/in/crmb BACKUP_CRMA=${MNP_GWMNP_HOME}/backup/in/crma BACKUPCTR=${MNP_GWMNP_HOME}/backup/in/ctr #directory in cui scrivere i files di Log LOG=${MNP_LOG_SCRIPT_HOME} APPLICATION_LOG=${MNP_LOG_APP_HOME} #directory in cui scrivere i file con i dati scartati (BAD) TMP=${MNP_SCRIPT_TMP_HOME} #directory in cui scrivere i file sql SQL=${MNP_SCRIPT_SQL_HOME} file_di_log=loadnp$(date '+20%y%m%d').log echo ANPSA0001 N loadnp $(date '+%d/%m/20%y %H:%M:%S') INIZIO PROCESSO__ versione 1.3 >> $APPLICATION_LOG/$file_di_log # # Decompressione del file di infasamento proveniente dal sistema esterno CRMB # DirLavoro=${MNP_GWMNP_HOME}/FILEIN #per il momento la commento e uso gwmnp #FileLog=/bea/UTILITY_GES/Logs/storicizza_INF_CRMB.log FileLog=$LOG/storicizza_INF_CRMB.log ###decompressione file infasamento CRMB### INF_CRMB=$(ls -1 $DirLavoro/CRMB_MNP_DONOR_*TXT.gz 2>/dev/null) if [ -s "$INF_CRMB" ]; then gunzip $INF_CRMB echo "STORICIZZAZIONE CRMB - $(date) - Decompresso il file "$INF_CRMB >> $FileLog else echo "ATTENZIONE: il file di infasamento CRMB odierno potrebbe non essere pervenuto in formato compresso" echo "STORICIZZAZIONE CRMB - $(date) - ATTENZIONE: il file di infasamento CRMB odierno potrebbe non essere pervenuto in formato compresso" >> $FileLog fi ###decompressione file infasamento CRMA### INF_CRMA=$(ls -1 $DirLavoro/CRMA_MNP_DONOR_*TXT.gz 2>/dev/null) if [ -s "$INF_CRMA" ]; then gunzip $INF_CRMA echo "STORICIZZAZIONE CRMA - $(date) - Decompresso il file "$INF_CRMA >> $FileLog else echo "ATTENZIONE: il file di infasamento CRMA odierno potrebbe non essere pervenuto in formato compresso" echo "STORICIZZAZIONE CRMA - $(date) - ATTENZIONE: il file di infasamento CRMA odierno potrebbe non essere pervenuto in formato compresso" >> $FileLog fi ############################# # # Recupero file di input # FileFtpCRMA=xxx FileFtpCRMACTR=yyy FileFtpSIMBA=xxx FileFtpSIMBACTR=yyy trovatoSimba=f trovatoCrma=f for Nome_File in `ls -1 $DAT/CRMB*.CTR` do Base_File=`basename $Nome_File .CTR` FileFtpSIMBA=$Base_File.TXT FileFtpSIMBACTR=$Base_File.CTR echo ANPSA6301 N loadnp $(date '+%d/%m/20%y %H:%M:%S') RECUPERO FILE TXT_$FileFtpSIMBA >> $APPLICATION_LOG/$file_di_log done for Nome_File in `ls -1 $DAT/CRMA*.CTR` do Base_File=`basename $Nome_File .CTR` FileFtpCRMA=$Base_File.TXT FileFtpCRMACTR=$Base_File.CTR echo ANPSA6301 N loadnp $(date '+%d/%m/20%y %H:%M:%S') RECUPERO FILE TXT_$FileFtpCRMA >> $APPLICATION_LOG/$file_di_log done # # Se esiste un file .CTR allora carico il relativo file .TXT # err=f if [ "$FileFtpSIMBA" != "xxx" -o "$FileFtpCRMA" != "xxx" ] then echo "->Creazione tabella appoggio Mnp_Appo_Tipo_Cliente" # # Creazione Tabella di appoggio # echo exit | $MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $SQL/create_table_mnp_appo.sql > $LOG/create_table_mnp_appo.log 2>&1 if [ $err = f -a "$FileFtpCRMA" != "xxx" ] then echo "->Caricamento CRMA..." #imposto una variabile per capire se ho trovato il flusso di crma trovatoCrma=t $MNP_SCRIPT_HOME/sqlExecutor.sh -sqlldr control=$CMD/CRMB_MNP.ctl log=$LOG/CRMB_MNP.log bad=$TMP/CRMB_MNP.bad data=$DAT/$FileFtpCRMA rows=100 errors=99999 >/dev/null 2>&1 echo "->Fine Caricamento CRMA" # 0 # 0 # Controllo se il caricamento e' andato bene # ret=`grep " 0 Rows not loaded due to data errors" $LOG/CRMB_MNP.log` ret1=`grep "System error" $LOG/CRMB_MNP.log` ret2=`grep "ORA-" $LOG/CRMB_MNP.log | grep -v "ORA-00001" | wc -l` ret2_num=`expr $ret2` if [ "$ret" = "" ] then #se ci sono errori di caricamento controllo se sono esclusivamente errori di duplicate primary key if [ ret2_num=0 ] then err=f else err=t fi fi # in ogni caso setto a valle err=t se ho un "System error" if [ "$ret1" != "" ] then err=t fi else echo "->File .CTR CRMA non trovato!!!" echo ANPSA6304 C loadnp $(date '+%d/%m/20%y %H:%M:%S') FILE .CTR NON TROVATO >> $APPLICATION_LOG/$file_di_log echo ANPSA0002 N loadnp $(date '+%d/%m/20%y %H:%M:%S') PROCESSO TERMINATO CORRETTAMENTE >> $APPLICATION_LOG/$file_di_log fi # controllo file simba if [ "$FileFtpSIMBA" != "xxx" ] then echo "->Caricamento SIMBA..." #imposto una variabile per capire se ho trovato il flusso di simba trovatoSimba=t $MNP_SCRIPT_HOME/sqlExecutor.sh -sqlldr control=$CMD/CRMB_MNP.ctl log=$LOG/CRMB_MNP.log bad=$TMP/CRMB_MNP.bad data=$DAT/$FileFtpSIMBA rows=100 errors=99999 >/dev/null 2>&1 echo "->Fine Caricamento SIMBA" # # Controllo se il caricamento e' andato bene # ret=`grep " 0 Rows not loaded due to data errors" $LOG/CRMB_MNP.log` ret1=`grep "System error" $LOG/CRMB_MNP.log` ret2=`grep "ORA-" $LOG/CRMB_MNP.log | grep -v "ORA-00001" | wc -l` ret2_num=`expr $ret2` if [ "$ret" = "" ] then #se ci sono errori di caricamento controllo se sono esclusivamente errori di duplicate primary key if [ ret2_num=0 ] then err=f else err=t fi fi # in ogni caso setto a valle err=t se ho un "System error" if [ "$ret1" != "" ] then err=t fi else echo "->File .CTR SIMBA non trovato!!!" echo ANPSA6304 C loadnp $(date '+%d/%m/20%y %H:%M:%S') FILE .CTR NON TROVATO >> $APPLICATION_LOG/$file_di_log echo ANPSA0002 N loadnp $(date '+%d/%m/20%y %H:%M:%S') PROCESSO TERMINATO CORRETTAMENTE >> $APPLICATION_LOG/$file_di_log fi if [ $err = t ] then righe=$(wc -l $TMP/CRMB_MNP.bad) echo ANPSA6303 C loadnp $(date '+%d/%m/20%y %H:%M:%S') RIGHE NON CARICATE PER DATI ERRATI $righe >> $APPLICATION_LOG/$file_di_log echo ANPSA0002 N loadnp $(date '+%d/%m/20%y %H:%M:%S') PROCESSO TERMINATO CORRETTAMENTE >> $APPLICATION_LOG/$file_di_log echo "->Caricamento non OK!!!" echo exit | $MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $SQL/drop_table_mnp_appo.sql > $LOG/drop_table_mnp_appo.log 2>&1 return fi # aggiunta del prefisso 39 per le utenze dual non nulle echo exit | $MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $SQL/update_utenza_dual.sql > $LOG/update_utenza_dual.log 2>&1 # # Rinomino i files # echo "->Rinomino files e tabelle" if [ $trovatoSimba = t ] then mv $DAT/$FileFtpSIMBACTR $BACKUPCTR/$FileFtpSIMBACTR.old mv $DAT/$FileFtpSIMBA $BACKUP_SIMBA/$FileFtpSIMBA.old fi if [ $trovatoCrma = t ] then mv $DAT/$FileFtpCRMACTR $BACKUPCTR/$FileFtpCRMACTR.old mv $DAT/$FileFtpCRMA $BACKUP_CRMA/$FileFtpCRMA.old fi # # Rinomino tabelle # echo exit | $MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $SQL/move_mnp_tipo_clienti.sql > $LOG/move_mnp_tipo_clienti.log 2>&1 echo ANPSA6302 N loadnp $(date '+%d/%m/20%y %H:%M:%S') INSERITE RIGHE IN TABELLA MNP_TIPO_CLIENTI >> $APPLICATION_LOG/$file_di_log echo ANPSA0002 N loadnp $(date '+%d/%m/20%y %H:%M:%S') PROCESSO TERMINATO CORRETTAMENTE >> $APPLICATION_LOG/$file_di_log else echo "->File .CTR SIMBA e CRMA non trovati!!!" echo ANPSA6304 C loadnp $(date '+%d/%m/20%y %H:%M:%S') FILE .CTR NON TROVATI >> $APPLICATION_LOG/$file_di_log echo ANPSA0002 N loadnp $(date '+%d/%m/20%y %H:%M:%S') PROCESSO TERMINATO CORRETTAMENTE >> $APPLICATION_LOG/$file_di_log fi echo "->Fine Procedura" fi