Descarga de una tabla con DSNTIAUL

La utilidad DB2 DSNTIAUL permite realizar una descarga de tabla a fichero fácilmente. Tiene menos restricciones de seguridad que la utilidad UNLOAD, por lo que es ideal para hacer descargas en entornos DB2 de prueba.

En su forma más sencilla se ejecutaría con un JCL como el siguiente:

//DESCARGA EXEC PGM=IKJEFT01,DYNAMNBR=20
//STEPLIB DD DSN=PRE.SDSNLOAD,DISP=SHR
//           DSN=PRE.RUNLIB.LOAD,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(SUB)
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIAUL) -
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSREC00 DD DSN=FIC.SYSREC00,DISP=(,CATLG,DELETE)
//SYSPUNCH DD DSN=FIC.SYSPUNCH,DISP=(,CATLG,DELETE)
//SYSIN DD *
CREADOR.TABLA

Observaciones:

  1. En la STEPLIB hemos incluido dos librerías de cargables (sustituir “PRE” por el prefijo que corresponda al subsistema DB2 al que queramos acceder)
    – DB2.SDSNLOAD:  contiene el cargable del procesador de comandos DSN
    – DB2.RUNLIB.LOAD:  contiene el cargable de DSNTIAUL
  2. En la SYSTSIN indicamos el nombre del subsistema DB2 (sustituir “SUB” por el nombre del subsistema),  la utilidad (DSNTIAUL) y el nombre del plan, que no siempre coincide con el de la utilidad. Tendremos que consultar el nombre que tenga  en nuestra instalación.
  3. En la SYSIN se especifica el nombre de la tabla. También es posible incluir un WHERE y un ORDER BY (en realidad es una sentencia SQL sin el “SELECT * FROM”)
  4. Ficheros de salida:
    – SYSREC00: Registros descargados de la tabla
    – SYSPUNCH: Contiene las sentencias de control para hacer una carga de la tabla mediante la utilidad LOAD.

El siguiente ejemplo nos va a servir para introducir nuevas opciones de esta utilidad.

//DESCARGA EXEC PGM=IKJEFT01,DYNAMNBR=20
//STEPLIB DD DSN=PRE.SDSNLOAD,DISP=SHR
//           DSN=PRE.RUNLIB.LOAD,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(SUB)
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIAUL) PARMS('SQL,1000')
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSREC00 DD DSN=FIC.SYSREC00,DISP=(,CATLG,DELETE)
//SYSREC01 DD DSN=FIC.SYSREC01,DISP=(,CATLG,DELETE)
//SYSPUNCH DD DSN=FIC.SYSPUNCH,DISP=(,CATLG,DELETE)
//SYSIN DD *
SELECT CREADOR.TABLA1_CAMPO1, CAST(COUNT(*) AS CHAR(10)) FROM CREADOR.TABLA1
GROUP BY CAMPO1;
SELECT * FROM CREADOR.TABLA2 ORDER BY CAMPO1, CAMPO2;

Hemos incluido los parámetros ‘SQL’, que nos permite incluir sentencias SQL completas en la SYSIN; y 1000 para limitar el número de filas de salida a ese valor.

Al haber dos sentencias SQL, se generan dos ficheros de salida (SYSREC00 y SYSREC01). Es posible incluir hasta 99 sentencias SQL separadas por puntos y coma que darían lugar a 99 ficheros de salida.

Deja un comentario