venerdì 15 febbraio 2019

ODI 12c - Utilizzo di variabili che richiamano operazioni di sistema operativo

Spesso nasce il problema di dover effettuare una wc -l su un file e poi verificarne il risultato, su ODI è facile l'utilizzo di variabili che accedono al database ma come si fa per estrarre valori da un file senza effettuare una load di un file in tabella?
Quanto indicheremo sotto è valido solo per l'estrazione di una riga da un file.
Vediamo passo passo come effettuare.

  1. Creazione di una variabile che effettui una select da sistema operativo.
  2. Creazione di una variabile di tipo testo che contenga in maniera dinamica il nome del file.
  3. Creazione di un package che richiama:
    1. la variabile indicata al passo 2 come set 
    2. la variabile indicata al passo 1 come refresh
  •  Come primo passo occorre creare una varibiale che effettui una select su sistema operativo e ce abbia la seguente sintassi, un pò ostica.
      select    COUNT_FILE.MAX_LEVEL    MAX_LEVEL
    from     #TI_INFOBOARD.V_FILE_AND_PATH COUNT_FILE
 /*$$SNPS_START_KEYSNP$CRDWG_TABLESNP$CRTABLE_NAME=#TI_INFOBOARD.INPUT_FILE_CC.txt

 SNP$CRLOAD_FILE=#TI_INFOBOARD.V_FILE_AND_PATHSNP$CRFILE_FORMAT=D
 SNP$CRFILE_SEP_FIELD=0x002cSNP$CRFILE_SEP_LINE=0x000A
 SNP$CRFILE_FIRST_ROW=0SNP$CRFILE_ENC_FIELD=SNP$CRFILE_DEC_SEP=SNP$CR
 SNP$CRDWG_COLSNP$CRCOL_NAME=MAX_LEVELSNP$CRTYPE_NAME=STRINGSNP$CRORDER=1
 SNP$CRLENGTH=0SNP$CRACTION_ON_ERROR=NULLSNP$CR$$SNPS_END_KEY*/


  •  Creazione della variabile di tipo testo che contiene il path dinamico.


  • Creazione del comando di sistema operativo che effettua la wc -l di un file ed inserisce il risultato in un altro file che poi contiene il valore da leggere.
            wc -l <PATH_FILE_1> | awk '{print $1}' > <PATH_FILE_1>_CC.txt


 
  •  Creazione Package che richiama le variabili.


Nessun commento:

Posta un commento