

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Übertragung umfangreicher z/OS Db2-Daten in CSV-Dateien nach Amazon S3
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files"></a>

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

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

Ein Mainframe ist in vielen Unternehmen immer noch ein Aufzeichnungssystem, das eine riesige Menge an Daten enthält, einschließlich Stammdateneinheiten mit Aufzeichnungen über aktuelle und historische Geschäftstransaktionen. Es ist oft isoliert und die verteilten Systeme innerhalb desselben Unternehmens können nur schwer darauf zugreifen. Mit dem Aufkommen der Cloud-Technologie und der Demokratisierung von Big Data sind Unternehmen daran interessiert, die in den Mainframe-Daten verborgenen Erkenntnisse zu nutzen, um neue Geschäftsmöglichkeiten zu entwickeln.

Mit diesem Ziel möchten Unternehmen ihre Mainframe-Db2-Daten für ihre Amazon Web Services (AWS) Cloud-Umgebung öffnen. Die geschäftlichen Gründe sind vielfältig und die Übertragungsmethoden unterscheiden sich von Fall zu Fall. Möglicherweise ziehen Sie es vor, Ihre Anwendung direkt mit dem Mainframe zu verbinden, oder Sie ziehen es vor, Ihre Daten nahezu in Echtzeit zu replizieren. Wenn der Anwendungsfall darin besteht, ein Data Warehouse oder einen Data Lake zu speisen, ist das Vorhandensein einer up-to-date Kopie kein Problem mehr, und das in diesem Muster beschriebene Verfahren könnte ausreichend sein, insbesondere wenn Sie Lizenzkosten für Produkte von Drittanbietern vermeiden möchten. Ein weiterer Anwendungsfall könnte die Mainframe-Datenübertragung für ein Migrationsprojekt sein. In einem Migrationsszenario sind Daten für die Durchführung der funktionalen Äquivalenztests erforderlich. Der in diesem Beitrag beschriebene Ansatz ist eine kostengünstige Möglichkeit, die Db2-Daten in die AWS-Cloud-Umgebung zu übertragen.

Da Amazon Simple Storage Service (Amazon S3) einer der am stärksten integrierten AWS-Services ist, können Sie von dort aus auf die Daten zugreifen und mithilfe anderer AWS-Services wie Amazon Athena, AWS Lambda-Funktionen oder Amazon direkt Erkenntnisse gewinnen. QuickSight Sie können die Daten auch mithilfe von AWS Glue oder AWS Database Migration Service (AWS DMS) in Amazon Aurora oder Amazon DynamoDB laden. Vor diesem Hintergrund wird hier beschrieben, wie Db2-Daten in CSV-Dateien im ASCII-Format auf dem Mainframe entladen und die Dateien nach Amazon S3 übertragen werden.

Zu diesem Zweck wurden [Mainframe-Skripte](https://github.com/aws-samples/unloaddb2-samples) entwickelt, die bei der Generierung von Jobsteuerungssprachen (JCLs) helfen, mit denen Sie so viele Db2-Tabellen entladen und übertragen können, wie Sie benötigen.

## Voraussetzungen und Einschränkungen
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-prereqs"></a>

**Voraussetzungen**
+ Ein z/OS IBM-Betriebssystembenutzer mit der Berechtigung, Restructured Extended Executor (REXX) - und JCL-Skripts auszuführen.
+ Zugriff auf z/OS Unix System Services (USS) zur Generierung von privaten und öffentlichen SSH-Schlüsseln (Secure Shell).
+ Ein beschreibbarer S3-Bucket. Weitere Informationen finden Sie unter [Erstellen Sie Ihren ersten S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) in der Amazon S3 S3-Dokumentation.
+ Ein SSH File Transfer Protocol (SFTP) -fähiger Server der AWS Transfer Family, der **Service Managed** als Identitätsanbieter und Amazon S3 als AWS-Speicherservice verwendet. Weitere Informationen finden Sie unter [Erstellen eines SFTP-fähigen Servers](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html) in der Dokumentation zur AWS Transfer-Familie.

**Einschränkungen**
+ Dieser Ansatz ist nicht für die Datensynchronisierung nahezu in Echtzeit oder in Echtzeit geeignet.
+ Daten können nur von Db2 z/OS nach Amazon S3 verschoben werden, nicht umgekehrt.

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

**Quelltechnologie-Stack**
+ Mainframe, auf dem Db2 auf z/OS läuft

**Zieltechnologie-Stack**
+ AWS Transfer Family
+ Amazon S3
+ Amazon Athena
+ Amazon QuickSight
+ AWS Glue
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Aurora
+ Amazon Redshift

**Quell- und Zielarchitektur**

Das folgende Diagramm zeigt den Prozess zum Generieren, Extrahieren und Übertragen von z/OS Db2-Daten im ASCII-CSV-Format in einen S3-Bucket.

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


1. Eine Liste von Tabellen wird für die Datenmigration aus dem Db2-Katalog ausgewählt.

1. Die Liste wird verwendet, um die Generierung von Entladejobs mit den numerischen Spalten und Datenspalten im externen Format voranzutreiben.

1. Die Daten werden dann mithilfe der AWS Transfer Family an Amazon S3 übertragen.

1. Ein AWS Glue-Auftrag zum Extrahieren, Transformieren und Laden (ETL) kann die Daten transformieren und im angegebenen Format in einen verarbeiteten Bucket laden, oder AWS Glue kann die Daten direkt in die Datenbank einspeisen.

1. Amazon Athena und Amazon QuickSight können verwendet werden, um die Daten abzufragen und zu rendern, um Analysen voranzutreiben.

Das folgende Diagramm zeigt einen logischen Ablauf des gesamten Prozesses.

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


1. Die erste JCL mit dem Namen TABNAME verwendet das Db2-Hilfsprogramm DSNTIAUL, um die Liste der Tabellen zu extrahieren und zu generieren, die Sie aus Db2 entladen möchten. Um Ihre Tabellen auszuwählen, müssen Sie die SQL-Eingabe manuell anpassen, um Filterkriterien für ein oder mehrere Db2-Schemas auszuwählen und hinzuzufügen.

1. Die zweite JCL, REXXEXEC genannt, verwendet ein JCL-Skelett und das REXX-Programm, das zur Verfügung gestellt wird, um die vom JCL TABNAME erstellte Tabellenliste zu verarbeiten und eine JCL pro Tabellennamen zu generieren. Jede JCL enthält einen Schritt zum Entladen der Tabelle und einen weiteren Schritt zum Senden der Datei an den S3-Bucket mithilfe des SFTP-Protokolls.

1. Der letzte Schritt besteht darin, die JCL auszuführen, um die Tabelle zu entladen, und die Datei an AWS zu übertragen. Der gesamte Prozess kann mithilfe eines Schedulers vor Ort oder auf AWS automatisiert werden.

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

**AWS-Services**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) ist ein interaktiver Abfrageservice, mit dem Sie Daten mithilfe von Standard-SQL direkt in Amazon Simple Storage Service (Amazon S3) analysieren können.
+ [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html) ist eine vollständig verwaltete relationale Datenbank-Engine, die für die Cloud entwickelt wurde und mit MySQL und PostgreSQL kompatibel ist.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) ist ein vollständig verwalteter Service zum Extrahieren, Transformieren und Laden (ETL). Er hilft Ihnen dabei, Daten zuverlässig zu kategorisieren, zu bereinigen, anzureichern und zwischen Datenspeichern und Datenströmen zu verschieben.
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) ist ein Business Intelligence (BI) -Service auf Cloud-Ebene, mit dem Sie Ihre Daten in einem einzigen Dashboard visualisieren, analysieren und melden können.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) ist ein verwalteter Data-Warehouse-Service im Petabyte-Bereich in der AWS-Cloud.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) unterstützt Sie bei der Einrichtung, dem Betrieb und der Skalierung einer relationalen Datenbank in der AWS-Cloud.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS Transfer Family](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html) ist ein sicherer Übertragungsservice, mit dem Sie Dateien in und aus AWS-Speicherservices übertragen können.

**Mainframe-Tools**
+ Das [SSH File Transfer Protocol (SFTP)](https://www.ssh.com/academy/ssh/sftp-ssh-file-transfer-protocol) ist ein sicheres Dateiübertragungsprotokoll, das die Fernanmeldung bei und die Dateiübertragung zwischen Servern ermöglicht. SSH bietet Sicherheit, indem es den gesamten Datenverkehr verschlüsselt.
+ [DSNTIAUL](https://www.ibm.com/docs/en/db2-for-zos/11?topic=dpasp-dsntiaul-sample-program) ist ein von IBM bereitgestelltes Beispielprogramm zum Entladen von Daten.
+ [DSNUTILB](https://www.ibm.com/docs/en/db2-for-zos/11?topic=sharing-recommendations-utilities-in-coexistence) ist ein von IBM bereitgestelltes Batchprogramm für Dienstprogramme zum Entladen von Daten mit verschiedenen Optionen aus DSNTIAUL.
+ [z/OS OpenSSH](https://www.ibm.com/docs/en/zos/2.4.0?topic=zbed-zos-openssh) ist ein Port von Open Source Software SSH, der auf dem Unix System Service unter dem IBM Betriebssystemnetzwerk ausgeführt wird. z/OS. SSH is a secure, encrypted connection program between two computers running on a TCP/IP Es bietet mehrere Dienstprogramme, darunter ssh-keygen.
+ Das [REXX-Skript (Restructured Extended Executor)](https://www.ibm.com/docs/en/zos/2.1.0?topic=guide-learning-rexx-language) wird verwendet, um die JCL-Generierung mit den Schritten Db2 Unload und SFTP zu automatisieren.

**Code**

[Der Code für dieses Muster ist im unloaddb2-Repository verfügbar. GitHub ](https://github.com/aws-samples/unloaddb2-samples)

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

Beim ersten Entladen JCLs sollten die generierten Daten die gesamten Tabellendaten entladen.

Führen Sie nach dem ersten vollständigen Entladen inkrementelle Entladungen durch, um die Leistung zu verbessern und Kosten zu sparen. Aktualisieren Sie die SQL-Abfrage im JCL-Deck der Vorlage, um alle Änderungen am Entladevorgang zu berücksichtigen.

Sie können das Schema manuell oder mithilfe eines Skripts auf Lambda mit dem Db2-SYSPUNCH als Eingabe konvertieren. Für einen industriellen Prozess ist [das AWS Schema Conversion Tool (SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2zOS.html) die bevorzugte Option.

Verwenden Sie schließlich einen Mainframe-basierten Scheduler oder einen Scheduler auf AWS mit einem Agenten auf dem Mainframe, um den gesamten Prozess zu verwalten und zu automatisieren.

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

### Richten Sie den S3-Bucket ein
<a name="set-up-the-s3-bucket"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie den S3-Bucket. | Anweisungen finden Sie unter [Erstellen Sie Ihren ersten S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). | Allgemeines AWS | 

### Richten Sie den Transfer Family Family-Server ein
<a name="set-up-the-transfer-family-server"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen SFTP-fähigen Server. | Gehen Sie wie folgt vor, um einen SFTP-Server auf der [AWS Transfer Family Family-Konsole](https://console.aws.amazon.com/transfer/) zu öffnen und zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | Allgemeines AWS | 
| Erstellen Sie eine IAM-Rolle für Transfer Family. | Um eine AWS Identity and Access Management (IAM) -Rolle für Transfer Family für den Zugriff auf Amazon S3 zu erstellen, folgen Sie den Anweisungen unter [Erstellen einer IAM-Rolle und](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-roles.html) -Richtlinie.  | AWS-Administrator | 
| Fügen Sie einen vom Amazon S3 S3-Dienst verwalteten Benutzer hinzu. | Um den vom Service verwalteten Amazon S3 S3-Benutzer hinzuzufügen, folgen Sie den Anweisungen in der [AWS-Dokumentation](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html#add-s3-user) und verwenden Sie Ihre Mainframe-Benutzer-ID. | Allgemeines AWS | 

### Sichern Sie das Kommunikationsprotokoll
<a name="secure-the-communication-protocol"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie den SSH-Schlüssel. | Führen Sie in Ihrer Mainframe-USS-Umgebung den folgenden Befehl aus.<pre>ssh-keygen -t rsa</pre>Wenn Sie zur Eingabe einer Passphrase aufgefordert werden, lassen Sie sie leer. | Mainframe-Entwickler | 
| Weisen Sie dem SSH-Ordner und den Schlüsseldateien die richtigen Autorisierungsstufen zu. | Standardmäßig werden die öffentlichen und privaten Schlüssel im Benutzerverzeichnis `/u/home/username/.ssh` gespeichert.Sie müssen den Schlüsseldateien die Autorisierung 644 und dem Ordner die Autorisierung 700 erteilen.<pre>chmod 644 .ssh/id_rsa<br />chmod 700 .ssh</pre> | Mainframe-Entwickler | 
| Kopieren Sie den Inhalt des öffentlichen Schlüssels auf Ihren vom Amazon S3 S3-Dienst verwalteten Benutzer. | Um den von USS generierten Inhalt des öffentlichen Schlüssels zu kopieren, öffnen Sie die [AWS Transfer Family Family-Konsole](https://console.aws.amazon.com/transfer/).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | Mainframe-Entwickler | 

### Generieren Sie das JCLs
<a name="generate-the-jcls"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Generieren Sie die im Geltungsbereich enthaltene Db2-Tabellenliste. | Geben Sie Eingabe-SQL ein, um eine Liste der Tabellen zu erstellen, die für die Datenmigration vorgesehen sind. In diesem Schritt müssen Sie Auswahlkriterien angeben, indem Sie die DB2-Katalogtabelle SYSIBM.SYSTABLES mithilfe einer SQL WHERE-Klausel abfragen. Filter können so angepasst werden, dass sie ein bestimmtes Schema oder Tabellennamen enthalten, die mit einem bestimmten Präfix beginnen oder auf einem Zeitstempel für das inkrementelle Entladen basieren. Die Ausgabe wird in einem physikalischen sequentiellen Datensatz (PS) auf dem Mainframe erfasst. Dieser Datensatz dient als Eingabe für die nächste Phase der JCL-Generierung.Bevor Sie den JCL-TABNAMEN verwenden (Sie können ihn bei Bedarf umbenennen), nehmen Sie die folgenden Änderungen vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Job zum Extrahieren der DB2-Tabellenliste**<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> | Mainframe-Entwickler | 
| Ändern Sie die JCL-Vorlagen. | Die mit diesem Muster bereitgestellten JCL-Vorlagen enthalten eine generische Job-Card und Bibliotheksnamen. Die meisten Mainframe-Websites werden jedoch ihre eigenen Benennungsstandards für Datensatznamen, Bibliotheksnamen und Jobkarten haben. Beispielsweise kann eine bestimmte Jobklasse erforderlich sein, um Db2-Jobs auszuführen. Das Job Entry Subsystem implementiert JES2 und JES3 kann zusätzliche Änderungen auferlegen. Standard-Ladebibliotheken haben möglicherweise einen anderen ersten Qualifier als `SYS1` den IBM-Standard. Passen Sie die Vorlagen daher an Ihre standortspezifischen Standards an, bevor Sie sie ausführen.Nehmen Sie die folgenden Änderungen am Grundgerüst JCL UNLDSKEL vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Entladen und SFTP-JCL-Skelett**<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>  | Mainframe-Entwickler | 
| Generieren Sie die Mass Unload JCL. | Dieser Schritt beinhaltet die Ausführung eines REXX-Skripts in einer ISPF-Umgebung mithilfe von JCL. Geben Sie die Liste der im ersten Schritt erstellten Tabellen im Gültigkeitsbereich als Eingabe für die Massengenerierung von JCL anhand des Namens an. `TABLIST DD` Die JCL generiert eine neue JCL pro Tabellennamen in einem benutzerdefinierten partitionierten Datensatz, der anhand des Namens angegeben wird. `ISPFILE DD` Ordnen Sie diese Bibliothek vorher zu. Jede neue JCL besteht aus zwei Schritten: einem Schritt zum Entladen der Db2-Tabelle in eine Datei und einem Schritt zum Senden der Datei an den S3-Bucket.Nehmen Sie die folgenden Änderungen in der JCL REXXEXEC vor (Sie können den Namen ändern):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Auftrag zur Massengenerierung von 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>Bevor Sie das REXX-Skript verwenden, nehmen Sie die folgenden Änderungen vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**STEPS REX-Skript**<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> | Mainframe-Entwickler | 

### Führen Sie das aus JCLs
<a name="run-the-jcls"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie den Schritt Db2 Unload aus. | Nach der JCL-Generierung werden Sie über so viele Tabellen verfügen, JCLs wie Sie haben, die entladen werden müssen.In dieser Geschichte werden die Struktur und die wichtigsten Schritte anhand eines von JCL generierten Beispiels erklärt.Von Ihrer Seite aus ist keine Aktion erforderlich. Die folgenden Informationen dienen nur als Referenz. Wenn Sie JCLs die im vorherigen Schritt generierten Daten einreichen möchten, fahren Sie mit dem Abschnitt LODnnnnn JCLs Aufgabe *einreichen* fort.Wenn Sie Db2-Daten mithilfe einer JCL mit dem von IBM bereitgestellten Hilfsprogramm DSNUTILB Db2 entladen, müssen Sie sicherstellen, dass die entladenen Daten keine komprimierten numerischen Daten enthalten. Verwenden Sie dazu den DSNUTILB-Parameter. `DELIMITED`Der `DELIMITED` Parameter unterstützt das Entladen der Daten im CSV-Format, indem er ein Zeichen als Trennzeichen und doppelte Anführungszeichen für das Textfeld hinzufügt, die Auffüllung in der VARCHAR-Spalte entfernt und alle numerischen Felder, einschließlich der DATE-Felder, in ein EXTERNES FORMAT konvertiert.Das folgende Beispiel zeigt, wie der Entladeschritt in der generierten JCL aussieht, wobei das Komma als Trennzeichen verwendet wird.<pre>                            <br /> UNLOAD<br /> DELIMITED COLDEL ',' <br /> FROM TABLE SCHEMA_NAME.TBNAME<br /> UNLDDN SYSREC01<br /> PUNCHDDN SYSPUN01<br /> SHRLEVEL CHANGE ISOLATION UR;</pre> | Mainframe-Entwickler, Systemingenieur | 
| Führen Sie den SFTP-Schritt aus. | Um das SFTP-Protokoll von einer JCL aus zu verwenden, verwenden Sie das BPXBATCH-Hilfsprogramm. Das SFTP-Hilfsprogramm kann nicht direkt auf die MVS-Datensätze zugreifen. Sie können den Befehl copy (`cp`) verwenden, um die sequenzielle Datei in das USS-Verzeichnis `&USRPFX..DB2.UNLOAD.&JOBNAME` zu kopieren, wo sie gespeichert wird. `&TABNAME..csv`Führen Sie den `sftp` Befehl mit dem privaten Schlüssel (`id_rsa`) und der RACF-Benutzer-ID als Benutzernamen aus, um eine Verbindung mit der IP-Adresse der AWS Transfer Family herzustellen.<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> | Mainframe-Entwickler, Systemingenieur | 
| Reichen Sie das LODnnnnn JCLs ein. | Die vorherige JCL hat alle LODnnnnn JCL-Tabellen generiert, die entladen, in CSV umgewandelt und in den S3-Bucket übertragen werden müssen.Führen Sie den `submit` Befehl für alle aus JCLs , die generiert wurden. | Mainframe-Entwickler, Systemingenieur | 

## Zugehörige Ressourcen
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-resources"></a>

Weitere Informationen zu den verschiedenen in diesem Dokument verwendeten Tools und Lösungen finden Sie im Folgenden:
+ [z/OS OpenSSH-Benutzerhandbuch](https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R4sc276806/$file/foto100_v2r4.pdf)
+ [Db2 z/OS — Beispiel für UNLOAD-Steueranweisungen](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-sample-control-statements)
+ [Db2 z/OS — Dateien mit Trennzeichen werden entladen](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-unloading-delimited-files)
+ [Transfer Family — Erstellen Sie einen SFTP-fähigen Server](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)
+ [Transfer Family — Arbeit mit dienstverwalteten Benutzern](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html)

## Zusätzliche Informationen
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-additional"></a>

Nachdem Sie Ihre Db2-Daten auf Amazon S3 gespeichert haben, haben Sie viele Möglichkeiten, neue Erkenntnisse zu gewinnen. Da Amazon S3 in AWS-Datenanalyse-Services integriert ist, können Sie diese Daten frei verwenden oder auf der verteilten Seite verfügbar machen. Sie können z. B. Folgendes tun:
+ Erstellen Sie einen [Data Lake auf Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) und gewinnen Sie wertvolle Erkenntnisse mithilfe query-in-place von Analyse- und Machine-Learning-Tools, ohne die Daten verschieben zu müssen.
+ Initiieren Sie eine [Lambda-Funktion](https://aws.amazon.com/lambda/), indem Sie einen Verarbeitungsworkflow nach dem Upload einrichten, der in die AWS Transfer Family integriert ist.
+ Entwickeln Sie neue Microservices für den Zugriff auf Daten in Amazon S3 oder in einer [vollständig verwalteten Datenbank](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) mithilfe von [AWS Glue](https://aws.amazon.com/glue/), einem serverlosen Datenintegrationsservice, der es einfach macht, Daten für Analysen, maschinelles Lernen und Anwendungsentwicklung zu entdecken, aufzubereiten und zu kombinieren.

In einem Anwendungsfall für die Migration können Sie, da Sie beliebige Daten vom Mainframe auf S3 übertragen können, wie folgt vorgehen:
+ Mit Amazon S3 Glacier und S3 Glacier Deep Archive können Sie die physische Infrastruktur außer Betrieb nehmen und eine kostengünstige Datenarchivierungsstrategie entwickeln. 
+ Entwickeln Sie skalierbare, langlebige und sichere Sicherungs- und Wiederherstellungslösungen mit Amazon S3 und anderen AWS-Services wie S3 Glacier und Amazon Elastic File System (Amazon EFS), um bestehende lokale Funktionen zu erweitern oder zu ersetzen.