

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Transfiera z/OS datos de Db2 a gran escala a Amazon S3 en archivos CSV
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files"></a>

*Bruno Sahinoglu, Abhijit Kshirsagar e Ivan Schuster, Amazon Web Services*

## Resumen
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-summary"></a>

Un mainframe sigue siendo el sistema de registro de muchas empresas que conservan una enorme cantidad de datos, incluidas entidades de datos maestros con registros de las transacciones comerciales actuales e históricas. A menudo está aislado, y los sistemas distribuidos de la misma empresa no pueden acceder fácilmente a él. Con la aparición de la tecnología en la nube y la democratización de los macrodatos, las empresas tratan de usar la información oculta en los datos del mainframe para desarrollar nuevas capacidades empresariales.

Con ese objetivo, las empresas buscan abrir sus datos Db2 de mainframe a su entorno de nube de Amazon Web Services (AWS). Los motivos empresariales son varios, y los métodos de transferencia varían de un caso a otro. Es posible que prefiera conectar la aplicación directamente al mainframe, o que prefiera replicar los datos prácticamente en tiempo real. Si el caso de uso es alimentar un almacén de datos o un lago de datos, disponer de una up-to-date copia ya no es un problema y el procedimiento descrito en este patrón puede ser suficiente, especialmente si se quiere evitar los costes de licencia de productos de terceros. Otro caso de uso podría ser la transferencia de datos de un mainframe para un proyecto de migración. En un escenario de migración, es necesario contar con datos para realizar las pruebas de equivalencia funcional. El enfoque descrito en esta publicación es una forma rentable de transferir los datos de Db2 al entorno de nube de AWS.

Dado que Amazon Simple Storage Service (Amazon S3) es uno de los servicios de AWS más integrados, puede acceder a los datos desde allí y recopilar información directamente mediante otros servicios de AWS, como Amazon Athena, AWS Lambda Functions o Amazon. QuickSight También puede cargar los datos en Amazon Aurora o Amazon DynamoDB mediante AWS Glue o AWS Database Migration Service (AWS DMS). Con ese objetivo en mente, este patrón describe cómo descargar datos de Db2 en archivos CSV en formato ASCII en el mainframe y transferir los archivos a Amazon S3.

Para ello, se han desarrollado [scripts de mainframe](https://github.com/aws-samples/unloaddb2-samples) para ayudar a generar lenguajes de control de tareas (JCLs) para descargar y transferir tantas tablas de Db2 como necesite.

## Requisitos previos y limitaciones
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-prereqs"></a>

**Requisitos previos **
+ Usuario del sistema z/OS operativo IBM con autorización para ejecutar scripts JCL y Restructured Extended Executor (REXX).
+ Acceso a los servicios del sistema z/OS Unix (USS) para generar claves públicas y privadas de SSH (Secure Shell).
+ Un bucket de S3 con permisos de escritura. Para obtener más información, consulte la sección [Cree su primer bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) en la documentación de Amazon S3.
+ Un servidor habilitado para el protocolo SSH File Transfer (SFTP) de AWS Transfer Family con **Service Managed** como proveedor de identidad y Amazon S3 como servicio de almacenamiento de AWS. Para obtener más información, consulte [Crear un servidor habilitado para SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html) en la documentación de AWS Transfer Family.

**Limitaciones**
+ Este enfoque no es adecuado para la sincronización de datos prácticamente en tiempo real o en tiempo real.
+ Los datos solo se pueden mover de Db2 z/OS a Amazon S3, y no al revés.

## Arquitectura
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-architecture"></a>

**Pila de tecnología de origen**
+ Mainframe que ejecuta Db2 en z/OS

**Pila de tecnología de destino**
+ AWS Transfer Family
+ Amazon S3
+ Amazon Athena
+ Amazon QuickSight
+ AWS Glue
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Aurora
+ Amazon Redshift

**Arquitectura de origen y destino**

El siguiente diagrama muestra el proceso de generación, extracción y transferencia de z/OS datos de Db2 en formato CSV ASCII a un bucket de S3.

![\[Data flow from corporate data center to Nube de AWS, showing mainframe extraction and cloud processing steps.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/66e6fa1a-1c7d-4b7a-8404-9ba85e433b24/images/87b13e0d-0be9-4462-bdbf-67342334416c.png)


1. Se selecciona una lista de tablas para la migración de datos del catálogo de Db2.

1. La lista se usa para impulsar la generación de trabajos de descarga con las columnas numéricas y de datos en formato externo.

1. A continuación, los datos se transfieren a Amazon S3 mediante AWS Transfer Family.

1. Un trabajo de extracción, transformación y carga (ETL) de AWS Glue puede transformar los datos y cargarlos en un bucket procesado en el formato especificado, o bien AWS Glue puede introducir los datos directamente en la base de datos.

1. Amazon Athena y Amazon se QuickSight pueden usar para consultar y renderizar los datos para impulsar el análisis.

En el siguiente diagrama se muestra un flujo lógico de todo el proceso.

![\[Flowchart showing JCL process with TABNAME, REXXEXEC, and JCL decks steps, including inputs and outputs.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/66e6fa1a-1c7d-4b7a-8404-9ba85e433b24/images/d72f2572-10c9-43f9-b6c9-7e57c9a69d52.png)


1. El primer JCL, denominado TABNAME, usará la utilidad DSNTIAUL de Db2 para extraer y generar la lista de tablas que planea descargar de Db2. Para elegir las tablas, debe adaptar manualmente la entrada SQL para seleccionar y añadir criterios de filtro que incluyan uno o más esquemas de Db2.

1. El segundo JCL, denominado REXXEXEC, usará un esqueleto de JCL y el programa REXX proporcionado para procesar la lista de tablas creada por el JCL TABNAME y generar un JCL por nombre de tabla. Cada JCL incluirá un paso para descargar la tabla y otro paso para enviar el archivo al bucket de S3 mediante el protocolo SFTP.

1. El último paso consiste en ejecutar el JCL para descargar la tabla y transferir el archivo a AWS. Todo el proceso se puede automatizar con AWS o mediante un programador en las instalaciones.

## Tools (Herramientas)
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-tools"></a>

**Servicios de AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio interactivo de consultas que le permite analizar datos directamente en Amazon Simple Storage Service (Amazon S3) usando SQL estándar.
+ [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html) es un motor de base de datos relacional completamente administrado diseñado para la nube y compatible con MySQL y PostgreSQL.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) es un servicio de inteligencia empresarial (BI) a escala de nube que le ayuda a visualizar, analizar y elaborar informes sobre sus datos en un único panel de control.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) es un servicio de almacenamiento de datos administrado de varios petabytes en la nube de AWS.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) le ayuda a configurar, utilizar y escalar una base de datos relacional en la nube de AWS.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [AWS Transfer Family](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html) es un servicio de transferencia segura que le permite transferir archivos dentro y fuera de los servicios de almacenamiento de AWS.

**Herramientas de mainframe**
+ El [Protocolo SSH File Transfer (SFTP)](https://www.ssh.com/academy/ssh/sftp-ssh-file-transfer-protocol) es un protocolo seguro de transferencia de archivos que permite el inicio de sesión remoto y la transferencia de archivos entre servidores. SSH proporciona seguridad al cifrar todo el tráfico.
+ [DSNTIAUL](https://www.ibm.com/docs/en/db2-for-zos/11?topic=dpasp-dsntiaul-sample-program) es un programa de muestra proporcionado por IBM para descargar datos.
+ [DSNUTILB](https://www.ibm.com/docs/en/db2-for-zos/11?topic=sharing-recommendations-utilities-in-coexistence) es un programa de utilidades por lotes proporcionado por IBM para descargar datos con diferentes opciones de DSNTIAUL.
+ [z/OS OpenSSH es un puerto SSH](https://www.ibm.com/docs/en/zos/2.4.0?topic=zbed-zos-openssh) de software de código abierto que se ejecuta en el Servicio de Sistema Unix bajo la red del sistema operativo IBM. z/OS. SSH is a secure, encrypted connection program between two computers running on a TCP/IP Proporciona múltiples utilidades, como ssh-keygen.
+ El script [REXX (Restructured Extended Executor)](https://www.ibm.com/docs/en/zos/2.1.0?topic=guide-learning-rexx-language) se usa para automatizar la generación de JCL con los pasos Db2 Unload y SFTP.

**Código**

[El código de este patrón está disponible en el repositorio unloaddb2. GitHub ](https://github.com/aws-samples/unloaddb2-samples)

## Prácticas recomendadas
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-best-practices"></a>

Para la primera descarga, lo generado JCLs debería descargar todos los datos de la tabla.

Tras la primera descarga completa, realice descargas graduales para mejorar el rendimiento y ahorrar costos. Actualice la consulta SQL de la plantilla JCL para adaptarla a cualquier cambio en el proceso de descarga.

Puede convertir el esquema manualmente o mediante un script de Lambda con SYSPUNCH de Db2 como entrada. Para un proceso industrial, la [herramienta de conversión de esquemas (SCT) de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2zOS.html) es la opción recomendada.

Por último, use un programador basado en mainframe o un programador en AWS con un agente en el mainframe para ayudar a gestionar y automatizar todo el proceso.

## Epics
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-epics"></a>

### Configuración del bucket de S3
<a name="set-up-the-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el bucket de S3. | Para obtener instrucciones, consulte [Crear su primer bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). | AWS general | 

### Configure el servidor Transfer Family
<a name="set-up-the-transfer-family-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un servidor compatible con SFTP. | Para abrir y crear un servidor SFTP en la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/), haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | AWS general | 
| Cree un rol de IAM para Transfer Family. | Para crear un rol de AWS Identity and Access Management (IAM) que permita a Transfer Family obtener acceso a Amazon S3, siga las instrucciones de [Crear una política y rol de IAM](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-roles.html).  | Administrador de AWS | 
| Añada un usuario gestionado por el servicio Amazon S3. | Para añadir el usuario gestionado por el servicio Amazon S3, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html#add-s3-user) y use su ID de usuario de mainframe. | AWS general | 

### Proteja el protocolo de comunicación
<a name="secure-the-communication-protocol"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la clave de SSH. | En el entorno de USS de su servidor principal, ejecute el siguiente comando.<pre>ssh-keygen -t rsa</pre>Cuando se le pida una contraseña, deje el campo vacío. | Desarrollador de Mainframe | 
| Proporcione los niveles de autorización correctos a la carpeta SSH y a los archivos de clave. | De forma predeterminada, las claves públicas y privadas se almacenarán en el directorio de usuario `/u/home/username/.ssh`.Debe conceder autorización 644 a los archivos de clave, y 700 a la carpeta.<pre>chmod 644 .ssh/id_rsa<br />chmod 700 .ssh</pre> | Desarrollador de Mainframe | 
| Copie el contenido de la clave pública a su usuario gestionado por el servicio Amazon S3. | Para copiar el contenido de clave pública generado por USS abra la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | Desarrollador de Mainframe | 

### Genera el JCLs
<a name="generate-the-jcls"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere la lista de tablas Db2 incluidas. | Proporcione el código SQL de entrada para crear una lista de las tablas destinadas a la migración de datos. Este paso requiere que especifique los criterios de selección consultando la tabla SYSIBM.SYSTABLES del catálogo de Db2 mediante una cláusula where de SQL. Los filtros se pueden personalizar para incluir un esquema específico, o bien nombres de tablas que comiencen con un prefijo concreto o en función de una marca de tiempo para la descarga gradual. El resultado se captura en un conjunto de datos secuencial físico (PS) en el mainframe. Este conjunto de datos servirá de entrada para la siguiente fase de generación de JCL.Antes de usar JCL TABNAME (puede renombrarlo si es necesario), realice los siguientes cambios:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Trabajo de extracción de lista de tablas de Db2**<pre><Jobcard><br />//* <br />//* UNLOAD ALL THE TABLE NAMES FOR A PARTICULAR SCHEMA<br />//* <br />//STEP01  EXEC PGM=IEFBR14<br />//* <br />//DD1      DD  DISP=(MOD,DELETE,DELETE),<br />//         UNIT=SYSDA,<br />//         SPACE=(1000,(1,1)),<br />//         DSN=<HLQ1>.DSN81210.TABLIST<br />//* <br />//DD2      DD  DISP=(MOD,DELETE,DELETE),<br />//         UNIT=SYSDA,<br />//         SPACE=(1000,(1,1)),<br />//         DSN=<HLQ1>.DSN81210.SYSPUNCH <br />//* <br />//UNLOAD  EXEC PGM=IKJEFT01,DYNAMNBR=20 <br />//SYSTSPRT DD  SYSOUT=* <br />//STEPLIB  DD  DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT<br />//         DD  DISP=SHR,DSN=DSNC10.SDSNLOAD<br />//         DD  DISP=SHR,DSN=CEE.SCEERUN <br />//         DD  DISP=SHR,DSN=DSNC10.DBCG.RUNLIB.LOAD <br />//SYSTSIN  DD  *<br />  DSN SYSTEM(DBCG) <br />  RUN  PROGRAM(DSNTIAUL) PLAN(DSNTIB12) PARMS('SQL') - <br />       LIB('DSNC10.DBCG.RUNLIB.LOAD')<br />  END<br />//SYSPRINT DD SYSOUT=*<br />//* <br />//SYSUDUMP DD SYSOUT=*<br />//* <br />//SYSREC00 DD DISP=(NEW,CATLG,DELETE),<br />//            UNIT=SYSDA,SPACE=(32760,(1000,500)),<br />//            DSN=<HLQ1>.DSN81210.TABLIST <br />//* <br />//SYSPUNCH DD DISP=(NEW,CATLG,DELETE), <br />//            UNIT=SYSDA,SPACE=(32760,(1000,500)),<br />//            VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=12 <br />//            DSN=<HLQ1>.DSN81210.SYSPUNCH <br />//* <br />//SYSIN    DD * <br />   SELECT CHAR(CREATOR), CHAR(NAME)<br />     FROM SYSIBM.SYSTABLES <br />    WHERE OWNER = '<Schema>' <br />      AND NAME LIKE '<Prefix>%' <br />      AND TYPE = 'T'; <br />/* </pre> | Desarrollador de Mainframe | 
| Modifique las plantillas de JCL. | Las plantillas JCL proporcionadas con este patrón contienen una tarjeta de trabajo y nombres de bibliotecas genéricas. Sin embargo, la mayoría de los sitios de mainframe tendrán sus propios estándares de nomenclatura para los nombres de conjuntos de datos, bibliotecas y tarjetas de trabajo. Por ejemplo, es posible que necesite una clase de trabajo específica para ejecutar trabajos de Db2. El subsistema Job Entry implementa JES2 y JES3 puede imponer cambios adicionales. Las bibliotecas de carga estándar pueden tener un primer calificador diferente a `SYS1`, que es el predeterminado de IBM. Por lo tanto, personalice las plantillas para adecuarlas a los estándares específicos de su sitio antes de ejecutarlas.Realice los siguientes cambios en el esqueleto de JCL UNLDSKEL:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Descargue el esqueleto de JCL mediante SFTP**<pre>//&USRPFX.U JOB (DB2UNLOAD),'JOB',CLASS=A,MSGCLASS=A, <br />//         TIME=1440,NOTIFY=&USRPFX<br />//* DELETE DATASETS<br />//STEP01   EXEC PGM=IEFBR14<br />//DD01     DD DISP=(MOD,DELETE,DELETE),<br />//            UNIT=SYSDA,<br />//            SPACE=(TRK,(1,1)),<br />// DSN=&USRPFX..DB2.PUNCH.&JOBNAME<br />//DD02     DD DISP=(MOD,DELETE,DELETE),<br />//            UNIT=SYSDA,<br />//            SPACE=(TRK,(1,1)),<br />// DSN=&USRPFX..DB2.UNLOAD.&JOBNAME<br />//*<br />//* RUNNING DB2 EXTRACTION BATCH JOB FOR AWS DEMO<br />//*<br />//UNLD01   EXEC PGM=DSNUTILB,REGION=0M,<br />// PARM='<DSN>,UNLOAD'<br />//STEPLIB  DD  DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT<br />//         DD  DISP=SHR,DSN=DSNC10.SDSNLOAD<br />//SYSPRINT DD  SYSOUT=*<br />//UTPRINT  DD  SYSOUT=*<br />//SYSOUT   DD  SYSOUT=*<br />//SYSPUN01 DD  DISP=(NEW,CATLG,DELETE),<br />//             SPACE=(CYL,(1,1),RLSE),<br />// DSN=&USRPFX..DB2.PUNCH.&JOBNAME<br />//SYSREC01 DD  DISP=(NEW,CATLG,DELETE),<br />//             SPACE=(CYL,(10,50),RLSE),<br />// DSN=&USRPFX..DB2.UNLOAD.&JOBNAME<br />//SYSPRINT DD SYSOUT=*<br />//SYSIN    DD *<br />  UNLOAD<br />  DELIMITED COLDEL ','<br />  FROM TABLE &TABNAME<br />  UNLDDN SYSREC01<br />  PUNCHDDN SYSPUN01<br />  SHRLEVEL CHANGE ISOLATION UR;<br /> /*<br />//*<br />//* FTP TO AMAZON S3 BACKED FTP SERVER IF UNLOAD WAS SUCCESSFUL<br />//*<br />//SFTP EXEC PGM=BPXBATCH,COND=(4,LE),REGION=0M<br />//STDPARM DD *<br /> SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'"<br />   &TABNAME..csv;<br /> echo "ascii             " >> uplcmd;<br /> echo "PUT &TABNAME..csv " >>>> uplcmd;<br /> sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTPSITE;<br /> rm &TABNAME..csv;<br /> //SYSPRINT DD SYSOUT=*<br /> //STDOUT DD SYSOUT=*<br /> //STDENV DD *<br /> //STDERR DD SYSOUT=*                                                </pre>  | Desarrollador de Mainframe | 
| Genere el JCL de descarga masiva. | Este paso implica ejecutar un script REXX en un entorno ISPF mediante JCL. Proporcione la lista de tablas incluidas en el primer paso como entrada para la generación masiva de JCL con el nombre `TABLIST DD`. El JCL generará un nuevo JCL por nombre de tabla en un conjunto de datos particionado definido por el usuario y especificado con el nombre `ISPFILE DD`. Asigne esta biblioteca de antemano. Cada nuevo JCL tendrá dos pasos: uno para descargar la tabla de Db2 en un archivo y otro para enviar el archivo al bucket de S3.Realice los siguientes cambios en el JCL REXXEXEC (puede cambiar el nombre):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Generación masiva de trabajos JCL**<pre>//RUNREXX JOB (CREATEJCL),'RUNS ISPF TABLIST',CLASS=A,MSGCLASS=A,      <br />//         TIME=1440,NOTIFY=&SYSUID<br />//* Most of the values required can be updated to your site specific<br />//* values using the command 'TSO ISRDDN' in your ISPF session. <br />//* Update all the lines tagged with //update marker to desired<br />//* site specific values. <br />//ISPF EXEC PGM=IKJEFT01,REGION=2048K,DYNAMNBR=25<br />//SYSPROC   DD DISP=SHR,DSN=USER.Z23D.CLIST<br />//SYSEXEC   DD DISP=SHR,DSN=<HLQ1>.TEST.REXXLIB<br />//ISPPLIB   DD DISP=SHR,DSN=ISP.SISPPENU<br />//ISPSLIB   DD DISP=SHR,DSN=ISP.SISPSENU<br />//          DD DISP=SHR,DSN=<HLQ1>.TEST.ISPSLIB<br />//ISPMLIB   DD DSN=ISP.SISPMENU,DISP=SHR<br />//ISPTLIB   DD DDNAME=ISPTABL<br />//          DD DSN=ISP.SISPTENU,DISP=SHR<br />//ISPTABL   DD LIKE=ISP.SISPTENU,UNIT=VIO<br />//ISPPROF   DD LIKE=ISP.SISPTENU,UNIT=VIO<br />//ISPLOG    DD SYSOUT=*,RECFM=VA,LRECL=125<br />//SYSPRINT  DD SYSOUT=*<br />//SYSTSPRT  DD SYSOUT=*<br />//SYSUDUMP  DD SYSOUT=*<br />//SYSDBOUT  DD SYSOUT=*<br />//SYSTSPRT  DD SYSOUT=*<br />//SYSUDUMP  DD SYSOUT=*<br />//SYSDBOUT  DD SYSOUT=*<br />//SYSHELP   DD DSN=SYS1.HELP,DISP=SHR <br />//SYSOUT    DD SYSOUT=*<br />//* Input list of tablenames<br />//TABLIST   DD DISP=SHR,DSN=<HLQ1>.DSN81210.TABLIST<br />//* Output pds<br />//ISPFILE   DD DISP=SHR,DSN=<HLQ1>.TEST.JOBGEN<br />//SYSTSIN   DD *<br />ISPSTART CMD(ZSTEPS <MFUSER> <FTPUSER> <AWS TransferFamily IP>)<br />/*</pre>Antes de ejecutar el script REXX, realice los siguientes cambios:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Script ZSTEPS REXX**<pre>/*REXX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */<br />/* 10/27/2021 - added new parms to accommodate ftp */<br />Trace "o" <br />    parse arg usrpfx ftpuser ftpsite<br />    Say "Start"<br />    Say "Ftpuser: " ftpuser "Ftpsite:" ftpsite<br />    Say "Reading table name list"<br />    "EXECIO * DISKR TABLIST (STEM LINE. FINIS"<br />    DO I = 1 TO LINE.0<br />      Say I<br />      suffix = I<br />      Say LINE.i<br />      Parse var LINE.i schema table rest<br />      tabname = schema !! "." !! table<br />      Say tabname<br />      tempjob= "LOD" !! RIGHT("0000" !! i, 5) <br />      jobname=tempjob<br />      Say tempjob<br />      ADDRESS ISPEXEC "FTOPEN "<br />      ADDRESS ISPEXEC "FTINCL UNLDSKEL"<br />      /* member will be saved in ISPDSN library allocated in JCL */<br />      ADDRESS ISPEXEC "FTCLOSE NAME("tempjob")"<br />    END<br /><br />    ADDRESS TSO "FREE F(TABLIST) "<br />    ADDRESS TSO "FREE F(ISPFILE) "<br /><br />exit 0</pre> | Desarrollador de Mainframe | 

### Ejecute el JCLs
<a name="run-the-jcls"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice el paso de descarga de Db2. | Tras la generación del JCL, tendrá tantas tablas JCLs como desee descargar.Esta historia emplea un ejemplo generado por el JCL para explicar la estructura y los pasos más importantes.No tiene que hacer nada. La siguiente información es solo para referencia. Si su intención es enviar las JCLs que ha generado en el paso anterior, vaya a *Enviar la LODnnnnn JCLs tarea*.Al descargar datos de Db2 usando un JCL con la utilidad DSNUTILB Db2 proporcionada por IBM, debe asegurarse de que los datos descargados no contengan datos numéricos comprimidos. Para ello, utilice el parámetro de DSNUTILB `DELIMITED`.El parámetro `DELIMITED` permite descargar los datos en formato CSV añadiendo un carácter como delimitador y comillas dobles para el campo de texto, eliminando el relleno de la columna VARCHAR y convirtiendo todos los campos numéricos a FORMATO EXTERNO, incluidos los campos de FECHA.El siguiente ejemplo muestra el aspecto del paso de descarga en el JCL generado, usando el carácter de coma como delimitador.<pre>                            <br /> UNLOAD<br /> DELIMITED COLDEL ',' <br /> FROM TABLE SCHEMA_NAME.TBNAME<br /> UNLDDN SYSREC01<br /> PUNCHDDN SYSPUN01<br /> SHRLEVEL CHANGE ISOLATION UR;</pre> | Desarrollador de mainframe, ingeniero de sistemas | 
| Realice el paso de SFTP. | Para usar el protocolo SFTP de un JCL, emplee la utilidad BPXBATCH. La utilidad SFTP no puede acceder directamente a los conjuntos de datos de MVS. Puede usar el comando de copia (`cp`) para copiar el archivo secuencial `&USRPFX..DB2.UNLOAD.&JOBNAME` al directorio USS, donde se convierte en `&TABNAME..csv`.Ejecute el comando `sftp` con la clave privada (`id_rsa`) y la ID de usuario de RACF como nombre de usuario para conectarse a la dirección IP de AWS Transfer Family.<pre>SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'"<br />   &TABNAME..csv;<br /> echo "ascii             " >> uplcmd;<br /> echo "PUT &TABNAME..csv " >>>> uplcmd;<br /> sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTP_TF_SITE;<br /> rm &TABNAME..csv; </pre> | Desarrollador de mainframe, ingeniero de sistemas | 
| Envíe el LODnnnnn JCLs. | El JCL anterior generaba todas las tablas de LODnnnnn JCL que debían descargarse, transformarse en CSV y transferirse al bucket de S3.Ejecute el `submit` comando en todas las JCLs que se hayan generado. | Desarrollador de mainframe, ingeniero de sistemas | 

## Recursos relacionados
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-resources"></a>

Para obtener más información sobre las diferentes herramientas y soluciones usadas en este documento, consulte lo siguiente:
+ [Guía del usuario de z/OS OpenSSH](https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R4sc276806/$file/foto100_v2r4.pdf)
+ [Db2 z/OS — Ejemplos de sentencias de control UNLOAD](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-sample-control-statements)
+ [Db2 z/OS — Descarga de archivos delimitados](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-unloading-delimited-files)
+ [Transfer Family: cree un servidor habilitado para SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)
+ [Transfer Family: trabajar con usuarios gestionados por servicios](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html)

## Información adicional
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-additional"></a>

Una vez que tenga sus datos de Db2 en Amazon S3, podrá obtener información de múltiples maneras. Como Amazon S3 se integra con los servicios de análisis de datos de AWS, puede consumir o exponer libremente estos datos de forma distribuida. Por ejemplo, puede hacer lo siguiente:
+ Cree un [lago de datos en Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) y extraiga información valiosa mediante query-in-place el uso de herramientas de análisis y aprendizaje automático sin mover los datos.
+ Iniciar una [función de Lambda](https://aws.amazon.com/lambda/) configurando un flujo de trabajo de procesamiento posterior a la carga integrado con AWS Transfer Family.
+ Desarrollar nuevos microservicios para acceder a los datos en Amazon S3 o en una [base de datos totalmente administrada](https://aws.amazon.com/free/database/?trk=ps_a134p000007CdNEAA0&trkCampaign=acq_paid_search_brand&sc_channel=PS&sc_campaign=acquisition_FR&sc_publisher=Google&sc_category=Database&sc_country=FR&sc_geo=EMEA&sc_outcome=acq&sc_detail=amazon%20relational%20database%20service&sc_content=Relational%20Database_e&sc_matchtype=e&sc_segment=548727697660&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Database|Solution|FR|EN|Text&s_kwcid=AL!4422!3!548727697660!e!!g!!amazon%20relational%20database%20service&ef_id=CjwKCAjwzt6LBhBeEiwAbPGOgcGbQIl1-QsbHfWTgMZSSHEXzSG377R9ZyK3tCcbnHuT45L230FufxoCeEkQAvD_BwE:G:s&s_kwcid=AL!4422!3!548727697660!e!!g!!amazon%20relational%20database%20service) con [AWS Glue](https://aws.amazon.com/glue/), un servicio de integración de datos sin servidor que facilita la detección, preparación y combinación de datos para el análisis, el machine learning y el desarrollo de aplicaciones.

En un caso de uso de migración, dado que puede transferir cualquier dato del mainframe a S3, puede hacer lo siguiente:
+ Retirar la infraestructura física y crear una estrategia de archivado de datos rentable con Amazon S3 Glacier y S3 Glacier Deep Archive. 
+ Crear soluciones de copia de seguridad y restauración escalables, duraderas y seguras con Amazon S3 y otros servicios de AWS, como S3 Glacier y Amazon Elastic File System (Amazon EFS), para mejorar o reemplazar las capacidades existentes en las instalaciones.