Transcodifique dados de mainframe movidos para Google Cloud através da biblioteca de fitas virtual
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A transcodificação de dados localmente num mainframe é um processo que consome muita CPU e resulta num elevado consumo de milhões de instruções por segundo (MIPS). Para evitar esta situação, pode usar o Cloud Run para mover e transcodificar dados de mainframe remotamente noGoogle Cloud. Isto liberta o mainframe para tarefas críticas para a empresa e também reduz o consumo de MIPS.
Se quiser mover volumes de dados muito grandes (cerca de 500 GB por dia ou mais) do seu mainframe para o Google Cloude não quiser usar o mainframe para este esforço, pode usar uma solução de biblioteca de fitas virtuais (VTL) ativada na nuvem para transferir os dados para um contentor do Cloud Storage. Em seguida, pode usar o Cloud Run para transcodificar os dados presentes no contentor e movê-los para o BigQuery.
Esta página aborda a forma de ler dados de mainframe copiados para um contentor do Cloud Storage, transcodificá-los do conjunto de dados do código de intercâmbio decimal codificado em binário alargado (EBCDIC) para o formato ORC em UTF-8 e carregar o conjunto de dados para uma tabela do BigQuery.
O diagrama seguinte mostra como pode mover os dados do mainframe para um
contentor do Cloud Storage através de uma solução VTL, transcodificar os dados para o formato ORC
com o Cloud Run e, em seguida, mover o conteúdo para o BigQuery.
Transcodifique remotamente dados de mainframe através da VTL
Antes de começar
Escolha uma solução VTL adequada aos seus requisitos e mova os dados do mainframe para um contentor do Cloud Storage e guarde-os como um ficheiro .dat. Certifique-se de que adiciona uma chave de metadados denominada x-goog-meta-lrecl ao ficheiro .dat carregado e que o comprimento da chave de metadados é igual ao comprimento do registo do ficheiro original, por exemplo, 80.
No mainframe, defina a variável de ambiente GCSDSNURI para o prefixo que usou para os dados do mainframe no contentor do Cloud Storage.
export GCSDSNURI="gs://BUCKET/PREFIX"
Substitua o seguinte:
BUCKET: o nome do contentor do Cloud Storage.
PREFIX: o prefixo que quer usar no contentor.
Crie uma conta de serviço ou identifique uma conta de serviço existente para usar com o Mainframe Connector. Esta conta de serviço tem de ter autorizações para aceder a contentores do Cloud Storage, conjuntos de dados do BigQuery e qualquer outro Google Cloud recurso que queira usar.
Transcodifique dados de mainframe carregados para um contentor do Cloud Storage
Para mover dados de mainframe para o Google Cloud usando VTL e transcodificar remotamente,
tem de realizar as seguintes tarefas:
Ler e transcodificar os dados presentes num contentor do Cloud Storage para o formato ORC. A operação de transcodificação converte um conjunto de dados EBCDIC de mainframe para o formato ORC em UTF-8.
Carregue o conjunto de dados para uma tabela do BigQuery.
(Opcional) Execute uma consulta SQL na tabela do BigQuery.
(Opcional) Exporte dados do BigQuery para um ficheiro binário no Cloud Storage.
Para realizar estas tarefas, siga estes passos:
No mainframe, crie uma tarefa para ler os dados de um .dat
ficheiro num contentor do Cloud Storage e transcodificá-los para o formato ORC, da seguinte forma.
Para ver a lista completa de variáveis de ambiente suportadas pelo
Mainframe Connector, consulte o artigo Variáveis de ambiente.
(Opcional) Crie e envie uma tarefa de consulta do BigQuery que execute uma leitura SQL a partir do ficheiro DD QUERY.
Normalmente, a consulta é uma declaração MERGE ou SELECT INTO DML que resulta na transformação de uma tabela do BigQuery. Tenha em atenção que o conetor do mainframe regista as métricas de tarefas, mas não escreve os resultados das consultas num ficheiro.
Pode consultar o BigQuery de várias formas: inline, com um conjunto de dados separado através de DD ou com um conjunto de dados separado através de DSN.
PROJECT_NAME: o nome do projeto no qual quer executar a consulta.
LOCATION: a localização onde a consulta vai ser executada. Recomendamos que execute a consulta numa localização próxima dos dados.
(Opcional) Crie e envie uma tarefa de exportação que execute uma leitura SQL a partir do ficheiro DD QUERY e exporte o conjunto de dados resultante para o Cloud Storage como um ficheiro binário.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-21 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."]]