

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Transfira z/OS dados do Db2 em grande escala para o Amazon S3 em arquivos 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*

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

Um mainframe ainda é um sistema de registro em muitas empresas que contém uma grande quantidade de dados, incluindo entidades de dados mestres com registros de transações comerciais atuais e históricas. Geralmente é isolado e não é facilmente acessado pelos sistemas distribuídos dentro da mesma empresa. Com o surgimento da tecnologia de nuvem e a democratização de big data, as empresas estão interessadas em usar os insights ocultos nos dados do mainframe para desenvolver novos recursos de negócios.

Com esse objetivo, as empresas estão procurando abrir seus dados Db2 de mainframe em seu ambiente de nuvem da Amazon Web Services (AWS). Os motivos comerciais são diversos e os métodos de transferência variam de caso a caso. Talvez você prefira conectar seu aplicativo diretamente ao mainframe ou talvez prefira replicar seus dados quase em tempo real. Se o caso de uso for alimentar um data warehouse ou um data lake, ter uma up-to-date cópia não é mais uma preocupação, e o procedimento descrito nesse padrão pode ser suficiente, especialmente se você quiser evitar custos de licenciamento de produtos de terceiros. Outro caso de uso pode ser a transferência de dados do mainframe para um projeto de migração. Em um cenário de migração, os dados são necessários para realizar o teste de equivalência funcional. A abordagem descrita nesta postagem é uma forma econômica de transferir os dados do Db2 para o ambiente de Nuvem AWS.

Como o Amazon Simple Storage Service (Amazon S3) é um dos serviços mais integrados da AWS, você pode acessar os dados de lá e coletar insights diretamente usando outros serviços da AWS, como Amazon Athena, funções do AWS Lambda ou Amazon. QuickSight Você também pode carregar os dados no Amazon Aurora ou no Amazon DynamoDB usando o AWS Glue ou o AWS Database Migration Service (AWS DMS). Com esse objetivo em mente, isso descreve como descarregar dados do Db2 em arquivos CSV no formato ASCII no mainframe e transferir os arquivos para o Amazon S3.

Para esse fim, [scripts de mainframe](https://github.com/aws-samples/unloaddb2-samples) foram desenvolvidos para ajudar a gerar linguagens de controle de tarefas (JCLs) para descarregar e transferir quantas tabelas do Db2 forem necessárias.

## Pré-requisitos e limitações
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-prereqs"></a>

**Pré-requisitos **
+ Um usuário do sistema z/OS operacional IBM com autorização para executar scripts Restructured Extended Executor (REXX) e JCL.
+ Acesso ao z/OS Unix System Services (USS) para gerar chaves públicas e privadas SSH (Secure Shell).
+ Um bucket do S3 gravável. Para obter mais informações, consulte [Criar um bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) na documentação do Amazon S3.
+ Um servidor habilitado para o AWS Transfer Family SSH File Transfer Protocol (SFTP) usando o **serviço gerenciado** como provedor de identidade e o Amazon S3 como serviço de armazenamento da AWS. Para obter mais informações, consulte [Criar um servidor habilitado para SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html) na documentação do AWS Transfer Family.

**Limitações**
+ Essa abordagem não é adequada para sincronização de dados quase em tempo real ou em tempo real.
+ Os dados só podem ser movidos do Db2 z/OS para o Amazon S3, e não o contrário.

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

**Pilha de tecnologia de origem**
+ Mainframe executando Db2 em z/OS

**Pilha de tecnologias de destino**
+ AWS Transfer Family
+ Amazon S3
+ Amazon Athena
+ Amazon QuickSight
+ AWS Glue
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Aurora
+ banco de dados de origem

**Arquitetura de origem e destino**

O diagrama a seguir mostra o processo de geração, extração e transferência de z/OS dados do Db2 no formato ASCII CSV para um bucket S3.

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


1. Uma lista de tabelas é selecionada para migração de dados do catálogo do Db2.

1. A lista é usada para impulsionar a geração de trabalhos de descarga com as colunas numéricas e de dados no formato externo.

1. Em seguida, os dados são transferidos para o Amazon S3 usando o AWS Transfer Family.

1. Uma tarefa de extração, transformação e carregamento (ETL) do AWS Glue pode transformar os dados e carregá-los em um bucket processado no formato especificado, ou o AWS Glue pode alimentar os dados diretamente no banco de dados.

1. O Amazon Athena e o Amazon QuickSight podem ser usados para consultar e renderizar os dados para impulsionar a análise.

O diagrama a seguir mostra um fluxo lógico de todo o processo.

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


1. O primeiro JCL, chamado TABNAME, usará o utilitário DSNTIAUL do Db2 para extrair e gerar a lista de tabelas que você planeja descarregar do Db2. Para escolher suas tabelas, você deve adaptar manualmente a entrada SQL para selecionar e adicionar critérios de filtro para incluir um ou mais esquemas do Db2.

1. O segundo JCL, chamado REXXEXEC, usará o esqueleto JCL e o programa REXX fornecido para processar a lista de tabelas criada pelo JCL TABNAME e gerar um JCL por nome de tabela. Cada JCL conterá uma etapa para descarregar a tabela e outra etapa para enviar o arquivo para o bucket do S3 usando o protocolo SFTP.

1. A última etapa consiste em executar o JCL para descarregar a tabela e transferir o arquivo para a AWS. Todo o processo pode ser automatizado usando um programador on-premises ou na AWS.

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

**Serviços da AWS**
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que permite analisar dados diretamente no Amazon Simple Storage Service (Amazon S3) usando SQL padrão.
+ O [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html) é um mecanismo de banco de dados relacional totalmente gerenciado criado para a nuvem e compatível com o MySQL e o PostgreSQL.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de extração, transformação e carregamento (ETL) totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.
+  QuickSightA [Amazon](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) é um serviço de inteligência de negócios (BI) em escala de nuvem que ajuda você a visualizar, analisar e relatar seus dados em um único painel.
+ O [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) é um serviço de data warehouse em escala de petabytes gerenciado na Nuvem AWS.
+ O [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) ajuda você a configurar, operar e escalar um banco de dados relacional na Nuvem AWS.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ O [AWS Transfer Family](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html) é um serviço de transferência seguro que permite transferir arquivos para dentro e para fora de serviços de armazenamento da AWS.

**Ferramentas de mainframe**
+ O [SSH File Transfer Protocol (SFTP)](https://www.ssh.com/academy/ssh/sftp-ssh-file-transfer-protocol) é um protocolo seguro de transferência de arquivos que permite o login remoto e a transferência de arquivos entre servidores. O SSH fornece segurança criptografando todo o tráfego.
+ O [DSNTIAUL](https://www.ibm.com/docs/en/db2-for-zos/11?topic=dpasp-dsntiaul-sample-program) é um programa de exemplo fornecido pela IBM para descarregar dados.
+ O [DSNUTILB](https://www.ibm.com/docs/en/db2-for-zos/11?topic=sharing-recommendations-utilities-in-coexistence) é um programa de utilitários em lote fornecido pela IBM para descarregar dados com opções diferentes do DSNTIAUL.
+ O [z/OS OpenSSH é uma porta de SSH](https://www.ibm.com/docs/en/zos/2.4.0?topic=zbed-zos-openssh) de software de código aberto executada no Unix System Service sob a rede do sistema operacional IBM. z/OS. SSH is a secure, encrypted connection program between two computers running on a TCP/IP Ele fornece vários utilitários, incluindo ssh-keygen.
+ O script [REXX (Restructured Extended Executor)](https://www.ibm.com/docs/en/zos/2.1.0?topic=guide-learning-rexx-language) é usado para automatizar a geração de JCL com as etapas Db2 Unload e SFTP.

**Código **

O código desse padrão está disponível no repositório GitHub [unloaddb2](https://github.com/aws-samples/unloaddb2-samples).

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

Para o primeiro descarregamento, o gerado JCLs deve descarregar todos os dados da tabela.

Após o primeiro descarregamento completo, execute descargas incrementais para obter melhor desempenho e economia de custos. Atualize a consulta SQL no conjunto de modelos da JCL para acomodar quaisquer alterações no processo de descarga.

Você pode converter o esquema manualmente ou usando um script no Lambda com o Db2 SYSPUNCH como entrada. Para um processo industrial, a [AWS Schema Conversion Tool (SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2zOS.html)) é a opção preferida.

Por fim, use um programador baseado em mainframe ou um programador na AWS com um agente no mainframe para ajudar a gerenciar e automatizar todo o processo.

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

### Configurar o bucket do S3
<a name="set-up-the-s3-bucket"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um bucket do S3. | Para obter instruções, consulte [Criar seu primeiro bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). | AWS geral | 

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


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um servidor habilitado para SFTP. | Para abrir e criar um servidor SFTP no [console do AWS Transfer Family](https://console.aws.amazon.com/transfer/), faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | AWS geral | 
| Criar um perfil do IAM para o Transfer Family. | Para criar um perfil do AWS Identity and Access Management (IAM) para que a Transfer Family acesse o Amazon S3, siga as instruções em [Criar um perfil e uma política do IAM](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-roles.html).  | Administrador da AWS | 
| Adicionar um usuário gerenciado por serviços do Amazon S3. | Para adicionar o usuário gerenciado pelo serviço Amazon S3, siga as instruções na [Documentação da AWS](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html#add-s3-user) e use seu ID do usuário do mainframe. | AWS geral | 

### Proteger o protocolo de comunicação
<a name="secure-the-communication-protocol"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar a chave SSH. | No ambiente do USS do mainframe, execute o comando a seguir.<pre>ssh-keygen -t rsa</pre>Quando for solicitada uma frase secreta, mantenha-a vazia. | Desenvolvedor de mainframe | 
| Fornecer os níveis de autorização corretos para a pasta SSH e os arquivos-chave. | Por padrão, as chaves pública e privada serão armazenadas no diretório do usuário `/u/home/username/.ssh`.Você deve dar a autorização 644 para os arquivos de chave e 700 para a pasta.<pre>chmod 644 .ssh/id_rsa<br />chmod 700 .ssh</pre> | Desenvolvedor de mainframe | 
| Copiar o conteúdo da chave pública para seu usuário gerenciado pelo serviço Amazon S3. | Para copiar o conteúdo da chave pública gerada pelo USS, abra o console do [AWS Transfer Family](https://console.aws.amazon.com/transfer/).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | Desenvolvedor de mainframe | 

### Gere o JCLs
<a name="generate-the-jcls"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Gerar a lista de tabelas do Db2 dentro do escopo. | Forneça o SQL de entrada para criar uma lista das tabelas que têm como escopo a migração de dados. Essa etapa exige que você especifique os critérios de seleção consultando a tabela do catálogo Db2 SYSIBM.SYSTABLES, usando uma cláusula WHERE do SQL. Os filtros podem ser personalizados para incluir um esquema específico ou nomes de tabelas que comecem com um prefixo específico ou com base em um timestamp para descarga incremental. A saída é capturada em um conjunto de dados sequencial físico (PS) no mainframe. Esse conjunto de dados funcionará como entrada para a próxima fase da geração do JCL.Antes de usar o JCL TABNAME (você pode renomeá-lo se necessário), faça as seguintes alterações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Trabalho de extração da lista de tabelas do 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> | Desenvolvedor de mainframe | 
| Modificar os modelos da JCL. | Os modelos JCL fornecidos com esse padrão contêm um cartão de trabalho genérico e nomes de bibliotecas. No entanto, a maioria dos sites de mainframe terá seus próprios padrões de nomenclatura para nomes do conjunto de dados, nomes de bibliotecas e cartões de trabalho. Por exemplo, uma classe de trabalho específica pode ser necessária para executar trabalhos do Db2. O Job Entry Subsytem é implementado JES2 e JES3 pode impor mudanças adicionais. As bibliotecas de carga padrão podem ter um primeiro qualificador diferente de `SYS1`, que é o padrão da IBM. Portanto, personalize os modelos de acordo com os padrões específicos do seu site antes de executá-los.Faça as seguintes alterações no esqueleto JCL UNLDSKEL:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Esqueleto JCL de descarga e 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>  | Desenvolvedor de mainframe | 
| Gerar o JCL de descarga em massa. | Essa etapa envolve a execução de um script REXX em um ambiente ISPF usando JCL. Forneça a lista de tabelas dentro do escopo criadas na primeira etapa como entrada para a geração de JCL em massa em relação ao nome `TABLIST DD`. O JCL gerará um novo JCL por nome de tabela em um conjunto de dados particionado especificado pelo usuário em relação ao nome `ISPFILE DD`. Aloque essa biblioteca com antecedência. Cada novo JCL terá duas etapas: uma etapa para descarregar a tabela Db2 em um arquivo e uma etapa para enviar o arquivo para o bucket do S3.Faça as seguintes alterações no JCL REXXEXEC (você pode alterar o nome):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Trabalho de geração de JCL em massa**<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 usar o script REXX, faça as seguintes alterações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/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> | Desenvolvedor de mainframe | 

### Execute o JCLs
<a name="run-the-jcls"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Executar a etapa Db2 Unload. | Após a geração do JCL, você terá JCLs quantas tabelas precisarem ser descarregadas.Esse histórico usa um exemplo gerado pela JCL para explicar a estrutura e as etapas mais importantes.Não é necessária nenhuma ação de sua parte. As informações a seguir são destinadas somente para referência. Se sua intenção é enviar o JCLs que você gerou na etapa anterior, vá para *Enviar a LODnnnnn JCLs* tarefa.Ao descarregar dados do Db2 usando um JCL com o utilitário DSNUTILB Db2 fornecido pela IBM, você deve garantir que os dados descarregados não contêm dados numéricos compactados. Para fazer isso, use o parâmetro DSNUTILB `DELIMITED`.O parâmetro `DELIMITED` tem suporte para o descarregamento dos dados no formato CSV adicionando um caractere como delimitador e aspas duplas ao campo de texto, removendo o preenchimento na coluna VARCHAR e convertendo todos os campos numéricos em FORMATO EXTERNO, incluindo os campos de DATA.O exemplo a seguir mostra a aparência da etapa de descarga no JCL gerado, usando o caractere de vírgula 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> | Desenvolvedor de mainframe, engenheiro de sistemas | 
| Executar a etapa SFTP. | Para usar o protocolo SFTP de um JCL, use o utilitário BPXBATCH. O utilitário SFTP não pode acessar os conjuntos de dados MVS diretamente. Você pode usar o comando copy (`cp`) para copiar o arquivo sequencial `&USRPFX..DB2.UNLOAD.&JOBNAME` para o diretório USS, onde ele se torna `&TABNAME..csv`.Execute o comando `sftp` usando a chave privada (`id_rsa`) e usando o ID de usuário do RACF como nome de usuário para se conectar ao endereço IP do 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> | Desenvolvedor de mainframe, engenheiro de sistemas | 
| Envie LODnnnnn JCLs o. | O JCL anterior gerou todas as tabelas LODnnnnn JCL que precisam ser descarregadas, transformadas em CSV e transferidas para o bucket do S3.Execute o `submit` comando em todos os JCLs que foram gerados. | Desenvolvedor de mainframe, engenheiro de sistemas | 

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

Para obter mais informações sobre as diferentes ferramentas e soluções usadas neste documento, consulte o seguinte:
+ [Guia do usuário do z/OS OpenSSH](https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R4sc276806/$file/foto100_v2r4.pdf)
+ [Db2 z/OS — Exemplos de instruções de controle UNLOAD](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-sample-control-statements)
+ [Db2 z/OS — Descarregando arquivos delimitados](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-unloading-delimited-files)
+ [Transfer Family – Criar um servidor habilitado para SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)
+ [Transfer Family – Trabalhar com usuários gerenciados por serviços](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html)

## Mais informações
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-additional"></a>

Depois de ter seus dados do Db2 no Amazon S3, você tem várias maneiras de desenvolver novos insights. Como o Amazon S3 se integra aos serviços de análise de dados da AWS, você pode consumir ou expor livremente esses dados no lado distribuído. Por exemplo, você pode fazer o seguinte:
+ Crie um [data lake no Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) e extraia informações valiosas usando query-in-place ferramentas de análise e aprendizado de máquina sem mover os dados.
+ Inicie uma [função do Lambda](https://aws.amazon.com/lambda/) configurando um fluxo de trabalho de processamento pós upload integrado ao AWS Transfer Family.
+ Desenvolva novos microsserviços para acessar os dados no Amazon S3 ou [em um banco de dados totalmente gerenciado](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) usando o [AWS Glue](https://aws.amazon.com/glue/), que é um serviço de integração de dados de tecnologia sem servidor que facilita a descoberta, preparação e combinação de dados para análise, machine learning e desenvolvimento de aplicativos.

Em um caso de uso de migração, como você pode transferir qualquer dado do mainframe para o S3, você pode fazer o seguinte:
+ Retire a infraestrutura física e crie uma estratégia de arquivamento de dados econômica com o Amazon S3 Glacier e o S3 Glacier Deep Archive. 
+ crie soluções de backup e restauração escaláveis, duráveis e seguras com o Amazon S3 e outros serviços da AWS, como o S3 Glacier e o Amazon Elastic File System (Amazon EFS), para aumentar ou substituir os recursos on-premises existentes.