Auf dieser Seite wird erläutert, wie Sie Mainframe-Daten lokal auf dem Mainframe in ein unterstütztes Format transcodieren und die Inhalte dann in Google Cloudverschieben.
Hinweis
Installieren Sie den Mainframe Connector auf jedem partitionierten Mainframe-Dataset, das Sie als Prozedurbibliothek (PROCLIB) verwenden möchten.
Die Befehle qsam und vsam
Transcodierung ist der Prozess der Umwandlung von Informationen von einer Form der codierten Darstellung in eine andere. Der Mainframe Connector bietet die Befehle qsam und vsam, um Daten lokal auf dem Mainframe zu transcodieren.
Die Befehle qsam decode und vsam decode verwenden ein COBOL-Copybook, um die Datensätze eines Mainframe-Datasets in ein Dateiformat wie ORC, CSV, JSONL oder AVRO zu konvertieren und die Ausgabe lokal oder in einen Cloud Storage-Bucket zu schreiben.
Sie können beispielsweise ein EBCDIC-codiertes QSAM-Dataset in UTF-8-ORC-Dateien konvertieren. Informationen zu allen unterstützten Ausgabeformaten finden Sie unter TranscodeFormat.
Der Befehl qsam encode bewirkt das Gegenteil: Er konvertiert CSV-, JSONL-, ORC- oder AVRO-Daten oder die Ergebnisse einer BigQuery-Abfrage in ein QSAM-Dataset. Informationen zu allen unterstützten Eingabeformaten finden Sie unter TranscodeInputFormat.
Diese Befehle bieten die folgenden Funktionen:
- Unterstützung für zusammengesetzte Datentypen, einschließlich der OCCURS-Klausel (Listen), der REDEFINES-Klausel und verschachtelter Datensätze. Weitere Informationen zu diesen Datentypen finden Sie in der Transcodierungsreferenz für
qsamundvsam. - Unterstützung für die Konfiguration des Transcodierungsprozesses über eine Transcoder-Konfigurationsdatei. Diese Funktion bietet mehr Flexibilität beim Decodieren von Daten in Google Cloudund beim Codieren der Daten zurück in den Mainframe.
- Unterstützung für die Erstellung eines Spillover-Datasets, d. h. einer Tabelle mit Transcodierungsfehlern, die für die Fehlerprüfung verwendet werden kann.
- Unterstützung für mehrere Eingabe- und Ausgabeformate. Mit dieser Funktion können Sie Ihre Daten in und aus verschiedenen Data Warehouses laden.
Mainframe-Daten lokal transcodieren und zu Google Cloudverschieben
Mit dem Mainframe-Connector können Sie Daten lokal auf dem Mainframe transcodieren und dann nach Cloud Storage verschieben. Gehen Sie so vor:
Erstellen Sie einen Job, um das Dataset auf Ihrem Mainframe zu lesen und in das ORC-Format zu transcodieren. Lesen Sie die Daten aus dem
INFILE-Dataset und das Datensatzlayout aus dem COPYBOOK DD.Sie können das Standardverhalten des Transcodierungsprozesses des Mainframe Connectors ändern, indem Sie mit dem Argument
--transcode-configurationeine Transcoder-Konfigurationsdatei angeben.Wenn Ihr Eingabe-Dataset eine QSAM-Datei (Queued Sequential Access Method) mit einer festen oder variablen Datensatzlänge ist, verwenden Sie den folgenden Befehl:
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //STDIN DD * BUCKET=BUCKET_NAME qsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename /*Wenn Ihr Eingabe-Dataset eine VSAM-Datei (Virtual Storage Access Method) mit einer festen oder variablen Datensatzlänge ist, verwenden Sie den folgenden Befehl:
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //STDIN DD * BUCKET=BUCKET_NAME vsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename /*Ersetzen Sie
BUCKET_NAMEdurch den Namen des Cloud Storage-Bucket, in den Sie Mainframe-Daten kopieren möchten.
In diesem Beispiel wird
DD DataPathverwendet, um den Pfad des Copybooks, der Eingabe und der Transcodierungskonfiguration anzugeben. Weitere Optionen finden Sie unterDataPath.Wenn Sie Variablen wie Projekt-IDs und Bucket-Namen nicht in jeder JCL-Prozedur (Job Control Language) angeben möchten, können Sie sie der BQSH-PROCLIB hinzufügen und in mehreren JCL-Prozeduren als Umgebungsvariablen referenzieren. Dieser Ansatz vereinfacht auch den Übergang zwischen Produktions- und Nicht-Produktionsumgebungen, da umgebungsspezifische Variablen in der BQSH-PROCLIB der Umgebung festgelegt werden.
Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie Laststatistiken aktivieren.
Erstellen Sie einen BigQuery-Ladejob, der die transcodierte Datei in BigQuery lädt, und senden Sie ihn. Wenn Sie die Daten beispielsweise in das ORC-Format transcodiert haben, können Sie die ORC-Dateipartitionen so aus
tablename.orcinMY_DATASET.MY_TABLEladen:Example JCL //STEP02 EXEC BQSH //STDIN DD * BUCKET=BUCKET_NAME PROJECT=PROJECT_NAME bq load --project_id=$PROJECT \ myproject:MY_DATASET.MY_TABLE \ gs://$BUCKET/tablename.orc/* /*Ersetzen Sie Folgendes:
BUCKET_NAME: Der Name des Cloud Storage-Buckets, der die ORC-Dateien enthält, die Sie in BigQuery laden möchten.PROJECT_NAME: der Name des Projekts, in dem Sie die Abfrage ausführen möchten.
Optional: Erstellen Sie einen BigQuery-Abfragejob, der einen SQL-Lesevorgang aus der QUERY DD-Datei ausführt, und senden Sie ihn. In der Regel ist die Abfrage eine
MERGE- oderSELECT INTO DML-Anweisung, die zur Transformation einer BigQuery-Tabelle führt. Beachten Sie, dass Mainframe Connector Jobmesswerte protokolliert, aber keine Abfrageergebnisse in eine Datei schreibt.Sie können BigQuery auf verschiedene Arten abfragen: inline, mit einem separaten Dataset mit
DDoder mit einem separaten Dataset mitDSN.Example JCL //STEP03 EXEC BQSH //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME LOCATION=LOCATION bq query --project_id=$PROJECT \ --location=$LOCATION/* /*Ersetzen Sie Folgendes:
PROJECT_NAME: der Name des Projekts, in dem Sie die Abfrage ausführen möchten.LOCATION: der Standort, an dem die Abfrage ausgeführt wird. Wir empfehlen, die Abfrage an einem Standort in der Nähe der Daten auszuführen.
Optional: Erstellen Sie einen Exportjob, der einen SQL-Lesevorgang aus der QUERY DD-Datei ausführt, und senden Sie ihn. Exportieren Sie das resultierende Dataset als Binärdatei auf einen Mainframe.
//STEP04 EXEC BQSH //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME qsam encode \ dd:QUERY dd:OUTFILE --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG --input-format=BIGQUERY \ --input-parameter project_id=PROJECT_NAME \ --input-parameter location=LOCATION/* /*Ersetzen Sie Folgendes:
PROJECT_NAME: der Name des Projekts, in dem Sie die Abfrage ausführen möchten.LOCATION: der Standort, an dem die Abfrage ausgeführt wird. Wir empfehlen, die Abfrage an einem Standort in der Nähe der Daten auszuführen.
Sie können das Standardverhalten des Transcodierungsprozesses des Mainframe Connectors ändern, indem Sie mit dem Argument
--transcode-configurationeine Transcoder-Konfigurationsdatei bereitstellen.Die Daten werden in das Dataset
OUTFILE DDexportiert. Das Datensatzlayout wird durchCOPYBOOK DDbeschrieben. Weitere Optionen für Copybook-, Ausgabedatei- und Transcodierungskonfigurationspfade finden Sie unterDataPath.