Trasferisci dati Db2 z/OS su larga scala su Amazon S3 in file CSV - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Trasferisci dati Db2 z/OS su larga scala su Amazon S3 in file CSV

Creato da Bruno Sahinoglu (AWS), Ivan Schuster () e Abhijit Kshirsagar () AWS AWS

Archivio di codiceDB2: Unload z/OS su S3

Ambiente: produzione

Fonte: Db2

Obiettivo: Amazon S3

Tipo R: Replatform

Carico di lavoro: IBM

Tecnologie: mainframe; data lake; database; migrazione DevelopmentAndTesting

AWSservizi: Amazon Aurora; AWS Glue; Amazon S3; Transfer AWS Family; Amazon Athena

Riepilogo

Un mainframe è ancora un sistema di registrazione in molte aziende, che contiene un'enorme quantità di dati, tra cui entità di dati master con registrazioni delle transazioni commerciali correnti e storiche. Spesso è isolato e non è facilmente accessibile dai sistemi distribuiti all'interno della stessa azienda. Con l'avvento della tecnologia cloud e la democratizzazione dei big data, le aziende sono interessate a utilizzare le informazioni nascoste nei dati del mainframe per sviluppare nuove funzionalità aziendali.

Con questo obiettivo, le aziende stanno cercando di aprire i dati mainframe Db2 all'ambiente cloud Amazon Web Services (AWS). Le ragioni commerciali sono diverse e i metodi di trasferimento variano da caso a caso. Potresti preferire connettere l'applicazione direttamente al mainframe oppure replicare i dati quasi in tempo reale. Se il caso d'uso è quello di alimentare un data warehouse o un data lake, avere una up-to-date copia non è più un problema e la procedura descritta in questo schema potrebbe essere sufficiente, soprattutto se si desidera evitare i costi di licenza di prodotti di terze parti. Un altro caso d'uso potrebbe essere il trasferimento di dati su mainframe per un progetto di migrazione. In uno scenario di migrazione, i dati sono necessari per eseguire il test di equivalenza funzionale. L'approccio descritto in questo post è un modo conveniente per trasferire i dati Db2 all'AWSambiente Cloud.

Poiché Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) è uno dei servizi più AWS integrati, puoi accedere ai dati da lì e raccogliere informazioni direttamente utilizzando AWS altri servizi come Amazon Athena, le funzioni AWS Lambda o Amazon. QuickSight Puoi anche caricare i dati su Amazon Aurora o Amazon DynamoDB AWS utilizzando Glue o Database AWS Migration Service (). AWS DMS Con questo obiettivo in mente, questo descrive come scaricare i dati Db2 in CSV file in ASCII formato sul mainframe e trasferire i file su Amazon S3.

A tal fine, sono stati sviluppati script mainframe per aiutare a generare linguaggi di controllo del lavoro (JCLs) per scaricare e trasferire tutte le tabelle Db2 necessarie.

Prerequisiti e limitazioni

Prerequisiti

  • Un utente del sistema operativo IBM z/OS con autorizzazione a eseguire Restructured Extended Executor () e script. REXX JCL

  • Accesso a z/OS Unix System Services (USS) per generare chiavi private e pubbliche (Secure ShellSSH).

  • Un bucket S3 scrivibile. Per ulteriori informazioni, consulta Crea il tuo primo bucket S3 nella documentazione di Amazon S3.

  • Un server abilitato al AWS Transfer Family SSH File Transfer Protocol (SFTP) che utilizza Service managed come provider di identità e Amazon S3 come AWS servizio di storage. Per ulteriori informazioni, consulta Creare un server SFTP abilitato nella documentazione di AWS Transfer Family.

Limitazioni

  • Questo approccio non è adatto per la sincronizzazione dei dati quasi in tempo reale o in tempo reale.

  • I dati possono essere spostati solo da Db2 z/OS ad Amazon S3, non viceversa.

Architettura

Stack tecnologico di origine

  • Mainframe che esegue Db2 su z/OS

Stack tecnologico Target

  • AWS Transfer Family

  • Amazon S3

  • Amazon Athena

  • Amazon QuickSight

  • AWS Glue

  • Amazon Relational Database Service (AmazonRDS)

  • Amazon Aurora

  • Amazon Redshift

Architettura di origine e destinazione

Il diagramma seguente mostra il processo di generazione, estrazione e trasferimento dei dati Db2 z/OS in ASCII CSV formato su un bucket S3.

Data flow from corporate data center to Cloud AWS, showing ETL process and analytics services.
  1. Viene selezionato un elenco di tabelle per la migrazione dei dati dal catalogo Db2.

  2. L'elenco viene utilizzato per guidare la generazione di lavori di scaricamento con le colonne numeriche e di dati in formato esterno.

  3. I dati vengono quindi trasferiti su Amazon S3 utilizzando AWS Transfer Family.

  4. Un job di estrazione, trasformazione e caricamento (ETL) di AWS Glue può trasformare i dati e caricarli in un bucket elaborato nel formato specificato, oppure AWS Glue può inserire i dati direttamente nel database.

  5. Amazon Athena e Amazon QuickSight possono essere utilizzati per interrogare ed eseguire il rendering dei dati per favorire l'analisi.

Il diagramma seguente mostra un flusso logico dell'intero processo.

Process flow diagram showing JCL TABNAME, table list, JCL REXXEXEC, and JCL decks steps.
  1. Il primoJCL, chiamatoTABNAME, utilizzerà l'utilità Db2 DSNTIAUL per estrarre e generare l'elenco di tabelle che intendi scaricare da Db2. Per scegliere le tabelle, è necessario adattare manualmente l'SQLinput per selezionare e aggiungere criteri di filtro per includere uno o più schemi Db2.

  2. Il secondoJCL, chiamatoREXXEXEC, utilizzerà uno JCL scheletro e il REXX programma fornito per elaborare l'elenco di tabelle creato da JCL TABNAME e generarne uno JCL per nome di tabella. Ciascuno JCL conterrà un passaggio per lo scaricamento della tabella e un altro passaggio per l'invio del file al bucket S3 utilizzando il protocollo. SFTP

  3. L'ultimo passaggio consiste nell'eseguire il comando JCL per scaricare la tabella e trasferire il file in. AWS L'intero processo può essere automatizzato utilizzando uno scheduler in sede o in locale. AWS

Strumenti

AWSservizi

  • Amazon Athena è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon Simple Storage Service (Amazon S3) utilizzando standard. SQL

  • Amazon Aurora è un motore di database relazionale completamente gestito creato per il cloud e compatibile con My SQL e Postgre. SQL

  • AWSGlue è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.

  • Amazon QuickSight è un servizio di business intelligence (BI) su scala cloud che ti aiuta a visualizzare, analizzare e riportare i tuoi dati in un'unica dashboard.

  • Amazon Redshift è un servizio di data warehouse gestito su scala petabyte nel cloud. AWS

  • Amazon Relational Database Service (RDSAmazon) ti aiuta a configurare, gestire e scalare un database relazionale nel AWS cloud.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

  • AWSTransfer Family è un servizio di trasferimento sicuro che consente di trasferire file da e verso i servizi di AWS archiviazione.

Strumenti mainframe

  • SSHFile Transfer Protocol (SFTP) è un protocollo di trasferimento file sicuro che consente l'accesso remoto e il trasferimento di file tra server. SSHfornisce sicurezza crittografando tutto il traffico.

  • DSNTIAULè un programma di esempio fornito da IBM per lo scaricamento dei dati.

  • DSNUTILBè un programma batch di utilità fornito IBM per scaricare dati con diverse opzioni da. DSNTIAUL

  • z/OS Open SSH è una porta di software Open Source SSH in esecuzione su Unix System Service con il sistema operativo z/OS. IBM SSHè un programma di connessione sicuro e crittografato tra due computer in esecuzione su una rete /IP. TCP Fornisce diverse utilità, tra cui ssh-keygen.

  • REXXLo script (Restructured Extended Executor) viene utilizzato per JCL automatizzare la generazione con Db2 Unload e steps. SFTP

Codice

Il codice per questo pattern è disponibile nel repository unloaddb2. GitHub

Best practice

Per il primo scaricamento, i dati generati JCLs dovrebbero scaricare l'intera tabella.

Dopo il primo scaricamento completo, esegui scaricamenti incrementali per migliorare le prestazioni e risparmiare sui costi. Aggiorna la SQL query nel template per adattarla a eventuali modifiche al processo di JCL scaricamento.

È possibile convertire lo schema manualmente o utilizzando uno script su Lambda con Db2 SYSPUNCH come input. Per un processo industriale, AWSSchema Conversion Tool (SCT) è l'opzione preferita.

Infine, utilizzate uno scheduler basato su mainframe o uno scheduler attivo AWS con un agente sul mainframe per gestire e automatizzare l'intero processo.

Epiche

AttivitàDescrizioneCompetenze richieste

Crea il bucket S3.

Per istruzioni, consulta Creare il tuo primo bucket S3.

Generale AWS
AttivitàDescrizioneCompetenze richieste

Crea un server SFTP abilitato.

Per aprire e creare un SFTP server sulla console AWS Transfer Family, procedi come segue:

  1. Nella pagina Scegli i protocolli, seleziona la casella di controllo SFTP(SSHFile Transfer Protocol) — trasferimento di file tramite Secure Shell.

  2. Per il provider di identità, scegli Service managed.

  3. Per l'endpoint, scegli Accessibile pubblicamente.

  4. Per il dominio, scegli Amazon S3.

  5. Nella pagina Configura dettagli aggiuntivi, mantieni le impostazioni predefinite.

  6. Crea il server.

Generale AWS

Crea un IAM ruolo per Transfer Family.

Per creare un ruolo AWS Identity and Access Management (IAM) per Transfer Family per accedere ad Amazon S3, segui le istruzioni in Creare un IAM ruolo e una policy.

AWSamministratore

Aggiungi un utente gestito dal servizio Amazon S3.

Per aggiungere l'utente gestito dal servizio Amazon S3, segui le istruzioni nella AWSdocumentazione e usa il tuo ID utente mainframe.

Generale AWS
AttivitàDescrizioneCompetenze richieste

Crea la SSH chiave.

Nel tuo USS ambiente mainframe, esegui il seguente comando.

ssh-keygen -t rsa

Nota: quando viene richiesta una passphrase, lasciatela vuota.

Sviluppatore di mainframe

Assegna i giusti livelli di autorizzazione alla SSH cartella e ai file chiave.

Per impostazione predefinita, le chiavi pubbliche e private verranno archiviate nella directory utente/u/home/username/.ssh.

È necessario fornire l'autorizzazione 644 ai file chiave e 700 alla cartella.

chmod 644 .ssh/id_rsa chmod 700 .ssh
Sviluppatore di mainframe

Copia il contenuto della chiave pubblica sul tuo utente gestito dal servizio Amazon S3.

Per copiare il contenuto della chiave pubblica USS generato, apri la console AWS Transfer Family.

  1. Nel riquadro di navigazione, selezionare Servers (Server).

  2. Scegli l'identificatore nella colonna Server ID per visualizzare i dettagli del server

  3. In Utenti, scegli un nome utente per visualizzare i dettagli dell'utente

  4. In chiavi SSH pubbliche, scegli Aggiungi chiave SSH pubblica per aggiungere la chiave pubblica a un utente. Per la chiave SSH pubblica, inserisci la tua chiave pubblica. La chiave viene convalidata dal servizio prima di poter aggiungere il nuovo utente.

  5. Scegliere Add key (Aggiungi chiave).

Sviluppatore di mainframe
AttivitàDescrizioneCompetenze richieste

Genera l'elenco delle tabelle Db2 pertinenti.

Fornisci input SQL per creare un elenco delle tabelle destinate alla migrazione dei dati. Questo passaggio richiede di specificare i criteri di selezione per interrogare la tabella del catalogo Db2. SYSIBM SYSTABLESutilizzando una clausola SQL where. I filtri possono essere personalizzati per includere uno schema o nomi di tabella specifici che iniziano con un prefisso particolare o basati su un timestamp per lo scaricamento incrementale. L'output viene acquisito in un set di dati sequenziali fisici (PS) sul mainframe. Questo set di dati fungerà da input per la prossima fase di generazione. JCL

Prima di utilizzare il JCL TABNAME (È possibile rinominarlo se necessario), apportate le seguenti modifiche:

  1. Sostituiscilo <Jobcard>con una classe di lavoro e un utente autorizzato a eseguire le utilità Db2.

  2. Sostituisci < HLQ1 > o personalizza i nomi dei set di dati di output per soddisfare gli standard del tuo sito.

  3. Aggiorna lo STEPLIB stack di PDSEs (set di dati partizionato esteso) in base agli standard del tuo sito. L'esempio di questo modello utilizza i valori predefiniti. IBM

  4. Sostituisci il PLAN nome e LIB con i valori specifici dell'installazione.

  5. Sostituisci <Schema>e inserisci i <Prefix>tuoi criteri di selezione per il catalogo Db2.

  6. Salva il risultato JCL in una libreria PDS (set di dati partizionato).

  7. JCLInvia il.

Processo di estrazione di elenchi di tabelle Db2

<Jobcard> //* //* UNLOAD ALL THE TABLE NAMES FOR A PARTICULAR SCHEMA //* //STEP01 EXEC PGM=IEFBR14 //* //DD1 DD DISP=(MOD,DELETE,DELETE), // UNIT=SYSDA, // SPACE=(1000,(1,1)), // DSN=<HLQ1>.DSN81210.TABLIST //* //DD2 DD DISP=(MOD,DELETE,DELETE), // UNIT=SYSDA, // SPACE=(1000,(1,1)), // DSN=<HLQ1>.DSN81210.SYSPUNCH //* //UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSPRT DD SYSOUT=* //STEPLIB DD DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT // DD DISP=SHR,DSN=DSNC10.SDSNLOAD // DD DISP=SHR,DSN=CEE.SCEERUN // DD DISP=SHR,DSN=DSNC10.DBCG.RUNLIB.LOAD //SYSTSIN DD * DSN SYSTEM(DBCG) RUN PROGRAM(DSNTIAUL) PLAN(DSNTIB12) PARMS('SQL') - LIB('DSNC10.DBCG.RUNLIB.LOAD') END //SYSPRINT DD SYSOUT=* //* //SYSUDUMP DD SYSOUT=* //* //SYSREC00 DD DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(32760,(1000,500)), // DSN=<HLQ1>.DSN81210.TABLIST //* //SYSPUNCH DD DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(32760,(1000,500)), // VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=12 // DSN=<HLQ1>.DSN81210.SYSPUNCH //* //SYSIN DD * SELECT CHAR(CREATOR), CHAR(NAME) FROM SYSIBM.SYSTABLES WHERE OWNER = '<Schema>' AND NAME LIKE '<Prefix>%' AND TYPE = 'T'; /*
Sviluppatore di mainframe

Modifica i JCL modelli.

I JCL modelli forniti con questo modello contengono una scheda lavoro generica e nomi di librerie. Tuttavia, la maggior parte dei siti mainframe avrà i propri standard di denominazione per i nomi dei set di dati, i nomi delle librerie e le job card. Ad esempio, potrebbe essere necessaria una classe di job specifica per eseguire i job Db2. Il Job Entry Subsystem implementa JES2 e JES3 può imporre ulteriori modifiche. Le librerie di caricamento standard potrebbero avere un primo qualificatore diverso da, che è l'impostazione predefinita. SYS1 IBM Pertanto, personalizza i modelli per tenere conto degli standard specifici del sito prima di eseguirli.

Apportate le seguenti modifiche allo scheletro: JCL UNLDSKEL

  1. Modifica la scheda lavoro con una classe di lavoro e un utente autorizzati a eseguire le utilità Db2.

  2. Personalizza i nomi dei set di dati di output per soddisfare gli standard del tuo sito.

  3. Aggiorna lo STEPLIB stack di PDSEs in base agli standard del tuo sito. L'esempio di questo modello utilizza i valori IBM predefiniti.

  4. Sostituitelo <DSN> con il nome e l'ID di correlazione del sottosistema Db2.

  5. Salva il risultato JCL in una PDS libreria che fa parte del tuo ISPSLIB stack, che è la libreria di modelli Skeleton standard per. ISPF

SFTPJCLScarico e scheletro

//&USRPFX.U JOB (DB2UNLOAD),'JOB',CLASS=A,MSGCLASS=A, // TIME=1440,NOTIFY=&USRPFX //* DELETE DATASETS //STEP01 EXEC PGM=IEFBR14 //DD01 DD DISP=(MOD,DELETE,DELETE), // UNIT=SYSDA, // SPACE=(TRK,(1,1)), // DSN=&USRPFX..DB2.PUNCH.&JOBNAME //DD02 DD DISP=(MOD,DELETE,DELETE), // UNIT=SYSDA, // SPACE=(TRK,(1,1)), // DSN=&USRPFX..DB2.UNLOAD.&JOBNAME //* //* RUNNING DB2 EXTRACTION BATCH JOB FOR AWS DEMO //* //UNLD01 EXEC PGM=DSNUTILB,REGION=0M, // PARM='<DSN>,UNLOAD' //STEPLIB DD DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT // DD DISP=SHR,DSN=DSNC10.SDSNLOAD //SYSPRINT DD SYSOUT=* //UTPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSPUN01 DD DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DSN=&USRPFX..DB2.PUNCH.&JOBNAME //SYSREC01 DD DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(10,50),RLSE), // DSN=&USRPFX..DB2.UNLOAD.&JOBNAME //SYSPRINT DD SYSOUT=* //SYSIN DD * UNLOAD DELIMITED COLDEL ',' FROM TABLE &TABNAME UNLDDN SYSREC01 PUNCHDDN SYSPUN01 SHRLEVEL CHANGE ISOLATION UR; /* //* //* FTP TO AMAZON S3 BACKED FTP SERVER IF UNLOAD WAS SUCCESSFUL //* //SFTP EXEC PGM=BPXBATCH,COND=(4,LE),REGION=0M //STDPARM DD * SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'" &TABNAME..csv; echo "ascii " >> uplcmd; echo "PUT &TABNAME..csv " >>>> uplcmd; sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTPSITE; rm &TABNAME..csv; //SYSPRINT DD SYSOUT=* //STDOUT DD SYSOUT=* //STDENV DD * //STDERR DD SYSOUT=*

 

Sviluppatore di mainframe

Genera il Mass JCL Unload.

Questo passaggio prevede l'esecuzione di uno REXX script in un ISPF ambiente utilizzandoJCL. Fornisci l'elenco delle tabelle relative all'ambito create nel primo passaggio come input per la JCL generazione di massa in base al TABLIST DD nome. Ne JCL genererà uno nuovo JCL per nome di tabella in un set di dati partizionato specificato dall'utente specificato in base al nome. ISPFILE DD Alloca prima questa libreria. Ogni nuovo JCL avrà due passaggi: un passaggio per scaricare la tabella Db2 in un file e un passaggio per inviare il file al bucket S3.

Apporta le seguenti modifiche in JCL REXXEXEC (puoi cambiare il nome):

  1. Job card user IDSostituitelo con un ID utente del mainframe che abbia l'autorità di scaricamento sulle tabelle. SostituisciliSYSPROC,ISPPLIB, ISPSLIBISPMLIB, e ISPTLIB <HLQ1> valorizzali o personalizzali DSN per soddisfare gli standard del tuo sito. Per scoprire i valori specifici dell'installazione, utilizzate il comando. TSO ISRDDN

  2. Sostituiscilo <MFUSER> con un ID utente con privilegi di esecuzione del lavoro nell'installazione.

  3. Sostituiscilo <FTPUSER> con un ID utente con il privilegio USS and FTP nell'installazione. Si presume che questo ID utente e le relative chiavi SSH di sicurezza si trovino nella directory Unix Systems Services appropriata sul mainframe.

  4. <AWS TransferFamily IP>Sostituiscilo con l'indirizzo IP AWS Transfer Family o il nome di dominio. Questo indirizzo verrà utilizzato per la SFTP fase.

  5. Invia il modulo JCL dopo aver richiesto la sistemazione standard sul sito e aver aggiornato il REXX programma come descritto di seguito.

Lavoro di JCL generazione di massa

//RUNREXX JOB (CREATEJCL),'RUNS ISPF TABLIST',CLASS=A,MSGCLASS=A, // TIME=1440,NOTIFY=&SYSUID //* Most of the values required can be updated to your site specific //* values using the command 'TSO ISRDDN' in your ISPF session. //* Update all the lines tagged with //update marker to desired //* site specific values. //ISPF EXEC PGM=IKJEFT01,REGION=2048K,DYNAMNBR=25 //SYSPROC DD DISP=SHR,DSN=USER.Z23D.CLIST //SYSEXEC DD DISP=SHR,DSN=<HLQ1>.TEST.REXXLIB //ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU //ISPSLIB DD DISP=SHR,DSN=ISP.SISPSENU // DD DISP=SHR,DSN=<HLQ1>.TEST.ISPSLIB //ISPMLIB DD DSN=ISP.SISPMENU,DISP=SHR //ISPTLIB DD DDNAME=ISPTABL // DD DSN=ISP.SISPTENU,DISP=SHR //ISPTABL DD LIKE=ISP.SISPTENU,UNIT=VIO //ISPPROF DD LIKE=ISP.SISPTENU,UNIT=VIO //ISPLOG DD SYSOUT=*,RECFM=VA,LRECL=125 //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSDBOUT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSDBOUT DD SYSOUT=* //SYSHELP DD DSN=SYS1.HELP,DISP=SHR //SYSOUT DD SYSOUT=* //* Input list of tablenames //TABLIST DD DISP=SHR,DSN=<HLQ1>.DSN81210.TABLIST //* Output pds //ISPFILE DD DISP=SHR,DSN=<HLQ1>.TEST.JOBGEN //SYSTSIN DD * ISPSTART CMD(ZSTEPS <MFUSER> <FTPUSER> <AWS TransferFamily IP>) /*

Prima di utilizzare lo REXX script, apportate le seguenti modifiche:

  1. Salvate lo REXX script in una PDS libreria definita sotto lo SYSEXEC stack nella versione JCL REXXEXEC modificata nel passaggio precedente con ZSTEPS come nome del membro. Se si desidera rinominarlo, è necessario aggiornarlo in base JCL alle proprie esigenze.

  2. Questo script utilizza l'opzione trace per stampare informazioni aggiuntive in caso di errori. È invece possibile aggiungere il EXECIO codice di gestione degli errori dopo TSO le istruzioni, e e rimuovere la riga di traccia. ISPEXEC

  3. Questo script genera i nomi dei membri utilizzando la convenzione LODnnnnn di denominazione, che può supportare fino a 100.000 membri. Se hai più di 100.000 tabelle, usa un prefisso più breve e modifica i numeri nell'istruzione. tempjob

ZSTEPSREXXsceneggiatura

/*REXX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* 10/27/2021 - added new parms to accommodate ftp */ Trace "o" parse arg usrpfx ftpuser ftpsite Say "Start" Say "Ftpuser: " ftpuser "Ftpsite:" ftpsite Say "Reading table name list" "EXECIO * DISKR TABLIST (STEM LINE. FINIS" DO I = 1 TO LINE.0 Say I suffix = I Say LINE.i Parse var LINE.i schema table rest tabname = schema !! "." !! table Say tabname tempjob= "LOD" !! RIGHT("0000" !! i, 5) jobname=tempjob Say tempjob ADDRESS ISPEXEC "FTOPEN " ADDRESS ISPEXEC "FTINCL UNLDSKEL" /* member will be saved in ISPDSN library allocated in JCL */ ADDRESS ISPEXEC "FTCLOSE NAME("tempjob")" END ADDRESS TSO "FREE F(TABLIST) " ADDRESS TSO "FREE F(ISPFILE) " exit 0
sviluppatore mainframe
AttivitàDescrizioneCompetenze richieste

Eseguire la fase Db2 Unload.

Dopo la JCL generazione, ne avrai tante JCLs quante sono le tabelle da scaricare.

Questa storia utilizza un esempio JCL generato per spiegare la struttura e i passaggi più importanti.

Non è richiesta nessuna azione da parte tua. Le seguenti informazioni sono solo di riferimento. Se intendi inviare JCLs ciò che hai generato nel passaggio precedente, vai alla sezione Invia l'LODnnnnnJCLsattività.

Quando si scaricano dati Db2 utilizzando a JCL con l'utilità DSNUTILB Db2 IBM fornita, è necessario assicurarsi che i dati scaricati non contengano dati numerici compressi. A tale scopo, utilizzate il parametro. DSNUTILB DELIMITED

Il DELIMITED parametro supporta lo scaricamento dei dati in CSV formato aggiungendo un carattere come delimitatore e virgolette doppie per il campo di testo, rimuovendo la spaziatura interna nella VARCHAR colonna e convertendo tutti i campi numerici in, compresi i campi. EXTERNAL FORMAT DATE

L'esempio seguente mostra l'JCLaspetto della fase di scaricamento nella finestra generata, utilizzando il carattere virgola come delimitatore.

UNLOAD DELIMITED COLDEL ',' FROM TABLE SCHEMA_NAME.TBNAME UNLDDN SYSREC01 PUNCHDDN SYSPUN01 SHRLEVEL CHANGE ISOLATION UR;
Sviluppatore di mainframe, ingegnere di sistema

Esegui il SFTP passaggio.

Per utilizzare il SFTP protocollo da aJCL, utilizzare l'BPXBATCHutilità. 

L'SFTPutilità non può accedere direttamente ai MVS set di dati. È possibile utilizzare il comando copy (cp) per copiare il file &USRPFX..DB2.UNLOAD.&JOBNAME sequenziale nella USS directory, dove diventa. &TABNAME..csv

Esegui il sftp comando utilizzando la chiave privata (id_rsa) e utilizzando l'ID RACF utente come nome utente per connetterti all'indirizzo IP AWS Transfer Family.

SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'" &TABNAME..csv; echo "ascii " >> uplcmd; echo "PUT &TABNAME..csv " >>>> uplcmd; sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTP_TF_SITE; rm &TABNAME..csv;
Sviluppatore di mainframe, ingegnere di sistema

Invia il. LODnnnnn JCLs

Il precedente JCL ha generato tutte le LODnnnnn JCL tabelle che devono essere scaricateCSV, trasformate e trasferite nel bucket S3.

Esegui il submit comando su tutto ciò JCLs che è stato generato.

Sviluppatore di mainframe, ingegnere di sistema

Risorse correlate

Per ulteriori informazioni sui diversi strumenti e soluzioni utilizzati in questo documento, consultate quanto segue:

Informazioni aggiuntive

Dopo aver archiviato i dati Db2 su Amazon S3, hai a disposizione molti modi per sviluppare nuove informazioni. Poiché Amazon S3 si integra con i servizi di analisi AWS dei dati, puoi utilizzare o esporre liberamente questi dati sul lato distribuito. Ad esempio, puoi eseguire le operazioni seguenti:

  • Crea un data lake su Amazon S3 ed estrai informazioni preziose utilizzando query-in-place strumenti di analisi e apprendimento automatico senza spostare i dati.

  • Avvia una funzione Lambda configurando un flusso di lavoro di elaborazione post-caricamento integrato con Transfer AWS Family.

  • Sviluppa nuovi microservizi per accedere ai dati in Amazon S3 o in database completamente gestiti utilizzando AWSGlue, un servizio di integrazione dei dati senza server che semplifica l'individuazione, la preparazione e la combinazione di dati per l'analisi, l'apprendimento automatico e lo sviluppo di applicazioni.

In un caso di migrazione, poiché puoi trasferire qualsiasi dato dal mainframe a S3, puoi fare quanto segue:

  • Elimina l'infrastruttura fisica e crea una strategia di archiviazione dei dati conveniente con Amazon S3 Glacier e S3 Glacier Deep Archive. 

  • Crea soluzioni di backup e ripristino scalabili, durevoli e sicure con Amazon S3 e AWS altri servizi, come S3 Glacier e Amazon Elastic File System (EFSAmazon), per aumentare o sostituire le funzionalità locali esistenti.