Mainframe-Daten, die zu Google Cloud verschoben wurden, mithilfe einer virtuellen Bandbibliothek transkodieren
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Das lokale Transcodieren von Daten auf einem Mainframe ist ein CPU-intensiver Vorgang, der zu einem hohen MIPS-Verbrauch (Millionen von Anweisungen pro Sekunde) führt. Um dies zu vermeiden, können Sie Cloud Run verwenden, um Mainframe-Daten aus der Ferne aufGoogle Cloudzu verschieben und zu transkodieren. So wird Ihr Mainframe für geschäftskritische Aufgaben freigegeben und der MIPS-Verbrauch wird reduziert.
Wenn Sie sehr große Datenmengen (mindestens 500 GB pro Tag) von Ihrem Mainframe zu Google Cloudverschieben möchten, aber Ihren Mainframe dafür nicht verwenden möchten, können Sie eine cloudfähige VTL-Lösung (Virtual Tape Library) verwenden, um die Daten in einen Cloud Storage-Bucket zu übertragen. Anschließend können Sie mit Cloud Run die im Bucket vorhandenen Daten transkodieren und in BigQuery verschieben.
Auf dieser Seite erfahren Sie, wie Sie Mainframe-Daten lesen, die in einen Cloud Storage-Bucket kopiert wurden, sie vom EBCDIC-Dataset (Extended Binary Coded Decimal Interchange Code) in das ORC-Format in UTF-8 umwandeln und den Datensatz in eine BigQuery-Tabelle laden.
Das folgende Diagramm zeigt, wie Sie Ihre Mainframe-Daten mit einer VTL-Lösung in einen Cloud Storage-Bucket verschieben, die Daten mit Cloud Run in das ORC-Format umwandeln und die Inhalte dann in BigQuery verschieben.
Mainframe-Daten per Fernzugriff mit VTL transkodieren
Hinweise
Wählen Sie eine VTL-Lösung aus, die Ihren Anforderungen entspricht, und verschieben Sie Ihre Mainframe-Daten in einen Cloud Storage-Bucket und speichern Sie sie als .dat. Achten Sie darauf, dass Sie der hochgeladenen .dat-Datei einen Metadatenschlüssel mit dem Namen x-goog-meta-lrecl hinzufügen und dass die Länge des Metadatenschlüssels der Datensatzlänge der ursprünglichen Datei entspricht, z. B. 80.
Legen Sie auf dem Mainframe die Umgebungsvariable GCSDSNURI auf das Präfix fest, das Sie für Ihre Mainframe-Daten im Cloud Storage-Bucket verwendet haben.
export GCSDSNURI="gs://BUCKET/PREFIX"
Ersetzen Sie Folgendes:
BUCKET: Der Name des Cloud Storage-Buckets.
PREFIX: Das Präfix, das Sie im Bucket verwenden möchten.
Erstellen Sie ein Dienstkonto oder identifizieren Sie ein vorhandenes Dienstkonto, das mit Mainframe Connector verwendet werden soll. Dieses Dienstkonto muss Berechtigungen für den Zugriff auf Cloud Storage-Buckets, BigQuery-Datasets und alle anderen Google Cloud Ressourcen haben, die Sie verwenden möchten.
Achten Sie darauf, dass dem von Ihnen erstellten Dienstkonto die Rolle Cloud Run-Aufrufer zugewiesen ist.
Mainframe-Daten, die in einen Cloud Storage-Bucket hochgeladen wurden, transkodieren
Wenn Sie Mainframe-Daten mithilfe von VTL zu Google Cloud verschieben und aus der Ferne transkodieren möchten, müssen Sie die folgenden Aufgaben ausführen:
Daten in einem Cloud Storage-Bucket lesen und in das ORC-Format umwandeln. Bei der Transcodierung wird ein EBCDIC-Dataset eines Mainframes in das ORC-Format in UTF-8 konvertiert.
Laden Sie das Dataset in eine BigQuery-Tabelle.
Optional: Führen Sie eine SQL-Abfrage für die BigQuery-Tabelle aus.
Optional: Daten aus BigQuery in eine Binärdatei in Cloud Storage exportieren.
So führen Sie diese Aufgaben aus:
Erstellen Sie auf Ihrem Mainframe einen Job, um die Daten aus einer .dat-Datei in einem Cloud Storage-Bucket zu lesen und in das ORC-Format zu transkodieren. Gehen Sie dazu so vor:
Eine vollständige Liste der vom Mainframe-Connector unterstützten Umgebungsvariablen finden Sie unter Umgebungsvariablen.
PROJECT_NAME: Der Name des Projekts, in dem Sie die Abfrage ausführen möchten.
INPUT_FILENAME: Der Name der .dat-Datei, die Sie in einen Cloud Storage-Bucket hochgeladen haben.
Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie Ladestatistiken aktivieren.
Optional: Erstellen und senden Sie einen BigQuery-Abfragejob, der eine SQL-Leseoperation aus der QUERY-DD-Datei ausführt.
Normalerweise handelt es sich bei der Abfrage um eine MERGE- oder SELECT INTO DML-Anweisung, die zur Transformation einer BigQuery-Tabelle führt. Hinweis: Der Mainframe-Connector protokolliert Jobmesswerte, schreibt Abfrageergebnisse aber nicht in eine Datei.
Sie können BigQuery auf verschiedene Arten abfragen: inline, mit einem separaten Dataset mit DD oder mit einem separaten Dataset mit DSN.
PROJECT_NAME: Der Name des Projekts, in dem Sie die Abfrage ausführen möchten.
LOCATION: Der Ort, an dem die Abfrage ausgeführt wird. Wir empfehlen, die Abfrage an einem Ort auszuführen, der sich in der Nähe der Daten befindet.
Optional: Erstellen und senden Sie einen Exportjob, der eine SQL-Leseoperation aus der QUERY-DD-Datei ausführt und den resultierenden Datensatz als Binärdatei in Cloud Storage exportiert.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-19 (UTC)."],[],[],null,["# Transcode mainframe data moved to Google Cloud using virtual tape library\n\nTranscoding data locally on a mainframe is a CPU-intensive process that results\nin high million instructions per second (MIPS) consumption. To avoid this, you\ncan use Cloud Run to move and transcode mainframe data remotely on\nGoogle Cloud. This frees up your mainframe for business critical tasks and also\nreduces MIPS consumption.\n\nIf you want to move very large volumes of data (around 500 GB per day or more)\nfrom your mainframe to Google Cloud, and don't want to use your mainframe for\nthis effort, you can use a cloud-enabled [Virtual Tape Library (VTL)](https://en.wikipedia.org/wiki/Virtual_tape_library) solution to transfer the data to a Cloud Storage\nbucket. You can then use Cloud Run to transcode data present in the\nbucket and move it to BigQuery.\n\nThis page discusses how to read mainframe data copied into a Cloud Storage\nbucket, transcode it from the extended binary coded decimal interchange code\n(EBCDIC) dataset to the ORC format in UTF-8, and load the dataset to a\nBigQuery table.\n| **Note:** This page doesn't explain you how to copy your data from your mainframe to a Cloud Storage bucket. The procedure described in this page starts with the assumption that you've moved your mainframe data to a Cloud Storage bucket.\n\nThe following diagram shows how you can move your mainframe data to a\nCloud Storage bucket using a VTL solution, transcode the data to the ORC\nformat using Cloud Run, and then move the content to BigQuery.\n\n\u003cbr /\u003e\n\nRemotely transcode mainframe data using VTL\n\n\u003cbr /\u003e\n\nBefore you begin\n----------------\n\n- Choose a VTL solution that suits your requirements and move your mainframe data to a Cloud Storage bucket and save it as a `.dat`. Ensure that you add a [metadata key](/storage/docs/viewing-editing-metadata#command-line_1) named `x-goog-meta-lrecl` to the uploaded `.dat` file, and that the metadata key length is equal to the original file's record length, for example 80.\n- [Deploy Mainframe Connector on Cloud Run](/mainframe-connector/docs/deploy-mainframe-connector).\n- In your mainframe, set the `GCSDSNURI` environment variable to the prefix that you have used for your mainframe data on Cloud Storage bucket. \n\n ```\n export GCSDSNURI=\"gs://BUCKET/PREFIX\"\n ```\n Replace the following:\n - \u003cvar translate=\"no\"\u003eBUCKET\u003c/var\u003e: The name of the Cloud Storage bucket.\n - \u003cvar translate=\"no\"\u003ePREFIX\u003c/var\u003e: The prefix that you want to use in the bucket.\n- [Create a service account](/iam/docs/service-accounts-create) or identify an existing service account to use with Mainframe Connector. This service account must have permissions to access Cloud Storage buckets, BigQuery datasets, and any other Google Cloud resource that you want to use.\n- Ensure that the service account you created is assigned the [Cloud Run Invoker role](/run/docs/reference/iam/roles#run.invoker).\n\nTranscode mainframe data uploaded to a Cloud Storage bucket\n-----------------------------------------------------------\n\nTo move mainframe data to Google Cloud using VTL and transcode remotely,\nyou must perform the following tasks:\n\n1. Read and transcode the data present in a Cloud Storage bucket to the ORC format. The transcoding operation converts a mainframe EBCDIC dataset to the ORC format in UTF-8.\n2. Load the dataset to a BigQuery table.\n3. (Optional) Execute a SQL query on the BigQuery table.\n4. (Optional) Export data from BigQuery into a binary file in Cloud Storage.\n\nTo perform these tasks, follow these steps:\n\n1. In your mainframe, create a job to read the data from a `.dat`\n file in a Cloud Storage bucket, and transcode it to ORC format, as follows.\n\n | **Note**\n | - Not all Google Cloud commands support remote transcoding. For more information, see [Mainframe Connector API reference](/mainframe-connector/docs/reference).\n | - Variables with the suffix FILLER are ignored during the import process.\n | - From version 5.12.0 onwards, Mainframe Connector replaces hyphens (\"-\") with underscores (\"_\") in variable names. If you want to keep hyphens in your variable names, disable this automatic conversion by setting the database variable `BQSH_FEATURE_CONVERT_UNDERSCORE_IN_FIELDS_NAME` to `false`.\n\n For the complete list of environment variables supported by\n Mainframe Connector, see [Environment variables](/mainframe-connector/docs/environment-variables). \n\n //STEP01 EXEC BQSH\n //COPYBOOK DD DISP=SHR,DSN=\u003cHLQ\u003e.COPYBOOK.FILENAME\n //STDIN DD *\n gsutil cp --replace gs://mybucket/tablename.orc \\\n --inDsn \u003cvar translate=\"no\"\u003eINPUT_FILENAME\u003c/var\u003e \\\n --remoteHost \u003cmainframe-connector-url\u003e.a.run.app \\\n --remotePort 443 \\\n --project_id \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e\n /*\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e: The name of the project in which you want to execute the query.\n - \u003cvar translate=\"no\"\u003eINPUT_FILENAME\u003c/var\u003e: The name of the `.dat` file that you uploaded to a Cloud Storage bucket.\n\n If you want to log the commands executed during this process, you can [enable load statistics](/mainframe-connector/docs/reference#enable_load_statistics).\n2. (Optional) Create and submit a BigQuery query job that executes a SQL read from\n the [QUERY DD file](/mainframe-connector/docs/reference#dataset-names).\n Typically the query will be a `MERGE` or `SELECT INTO DML`\n statement that results in transformation of a BigQuery table. Note\n that Mainframe Connector logs in job metrics but doesn't write query\n results to a file.\n\n You can query BigQuery in various ways-inline, with a separate\n dataset using DD, or with a separate dataset using DSN. \n\n Example JCL\n //STEP03 EXEC BQSH\n //QUERY DD DSN=\u003cHLQ\u003e.QUERY.FILENAME,DISP=SHR\n //STDIN DD *\n PROJECT=\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e\n LOCATION=\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e\n bq query --project_id=$PROJECT \\\n --location=$LOCATION/*\n /*\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e: The name of the project in which you want to execute the query.\n - \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: The location for where the query will be executed. We recommended that you execute the query in a location close to the data.\n3. (Optional) Create and submit an export job that executes a SQL read from the\n [QUERY DD file](/mainframe-connector/docs/reference#dataset-names), and exports\n the resulting dataset to Cloud Storage as a binary file.\n\n Example JCL\n //STEP04 EXEC BQSH\n //OUTFILE DD DSN=\u003cHLQ\u003e.DATA.FILENAME,DISP=SHR\n //COPYBOOK DD DISP=SHR,DSN=\u003cHLQ\u003e.COPYBOOK.FILENAME\n //QUERY DD DSN=\u003cHLQ\u003e.QUERY.FILENAME,DISP=SHR\n //STDIN DD *\n PROJECT=\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e\n DATASET_ID=\u003cvar translate=\"no\"\u003eDATASET_ID\u003c/var\u003e\n DESTINATION_TABLE=\u003cvar translate=\"no\"\u003eDESTINATION_TABLE\u003c/var\u003e\n BUCKET=\u003cvar translate=\"no\"\u003eBUCKET\u003c/var\u003e\n bq export --project_id=$PROJECT \\\n --dataset_id=$DATASET_ID \\\n --destination_table=$DESTINATION_TABLE \\\n --location=\"US\" \\\n --bucket=$BUCKET \\\n --remoteHost \u003cmainframe-connector-url\u003e.a.run.app \\\n --remotePort 443\n /*\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e: The name of the project in which you want to execute the query.\n - \u003cvar translate=\"no\"\u003eDATASET_ID\u003c/var\u003e: The BigQuery dataset ID that contains the table that you want to export.\n - \u003cvar translate=\"no\"\u003eDESTINATION_TABLE\u003c/var\u003e: The BigQuery table that you want to export.\n - \u003cvar translate=\"no\"\u003eBUCKET\u003c/var\u003e: The Cloud Storage bucket that will contain the output binary file."]]