Bash Script: conectarse a DB2 y hacer un reporte

Por Sagara el 21 de junio del 2013

ibm-db2

  • Vamos a crear un Bash Script que se conecte localmente a una base de datos DB2 y envié un reporte vía email

Veamos el siguiente escenario: una universidad esta capturando inasistencias por materia de los alumnos de primer año. Por políticas universitarias la tolerancia máxima es de tres faltas y cuatro en algunas materias. El requerimiento podría ser mandar un reporte semanal al asesor con el total de candidatos por materia que están por alcanzar el máximo de faltas hasta el momento.

Empecemos con un ejemplo de una tabla que esta guardando inasistencias de estudiantes por materia:

"ALUMNO_ID" BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (
 ...
 ... )
"MATERIA" VARCHAR(10000) NOT NULL ,
"INASISTENCIA" INTEGER NOT NULL ,
 ...
 

Ejecutar queries en DB2

Primero vamos a crear la función que ejecute SQL queries en la base de datos, los guarde en un archivo de texto y la mandamos llamar con unos cuantos ejemplos:

#!/bin/bash

_file="reportCandidates2fail.txt"

_db="UNIVERSITY_DB"
_table="STUDENTS_ABSENCES"

# Funcion para ejecutar sql queries en db2
# necesita dos parametros: SQL ("$1") y MATERIA ("$2")
function runQuery(){
        query=$(db2 -x "$1")
        EXIT_CODE=$?

        if [ $EXIT_CODE -ne 0 ] ; then
                echo "Error : $query"
        else
                echo "$2, $query" >> ${_file}
        fi
}

# Connect to the database
db2 connect to $_db

_SQL="SELECT COUNT(*) FROM ${_table} WHERE MATERIA='MATEMATICAS' AND INASISTENCIA=2"
runQuery "${_SQL}" "MATEMATICAS"

_SQL2="SELECT COUNT(*) FROM ${_table} WHERE MATERIA='REDES' AND INASISTENCIA=2"
runQuery "${_SQL2}" "REDES"

_SQL3="SELECT COUNT(*) FROM ${_table} WHERE MATERIA='DEPORTE' AND INASISTENCIA=3"
runQuery "${_SQL3}" "DEPORTE"

#SQL here
#SQL here
#And more funny SQL here

 

Arrays y loops

Para ahorrarnos lineas de código y no tener que estar escribiendo un SQL por por cada materia vamos a hacer unos arreglos y unos ciclos:
Leer el resto de la entrada »


Publicado en Software Libre, Tutoriales
Sitios Amigos
Únete en Facebook
Síguenos en Twitter
Publicaciones Favoritas