Nesta página, explicamos como transcodificar dados de mainframe localmente no mainframe para um formato compatível e mover o conteúdo para o Google Cloud.
Antes de começar
Instale o Mainframe Connector em qualquer conjunto de dados particionado de mainframe que você queira usar como uma biblioteca de procedimentos (PROCLIB).
Os comandos qsam e vsam
A transcodificação é o processo de conversão de informações de uma forma de representação codificada para outra. O Mainframe Connector fornece os comandos qsam e vsam para transcodificar dados localmente no mainframe.
Os comandos qsam decode e vsam decode usam um copybook COBOL para converter os registros de um conjunto de dados de mainframe em um formato de arquivo como ORC, CSV, JSONL ou AVRO e gravar a saída localmente ou em um bucket do Cloud Storage.
Por exemplo, é possível converter um conjunto de dados QSAM codificado em EBCDIC em arquivos ORC UTF-8. Para conferir todos os formatos de saída compatíveis, consulte
TranscodeFormat.
O comando qsam encode faz o oposto: converte dados CSV, JSONL, ORC ou AVRO, ou os resultados de uma consulta do BigQuery, em um conjunto de dados QSAM. Para todos os formatos de entrada compatíveis, consulte
TranscodeInputFormat.
Esses comandos oferecem os seguintes recursos:
- Suporte para tipos de dados compostos, incluindo a cláusula OCCURS (listas), a cláusula REDEFINES e registros aninhados. Para mais informações sobre esses tipos de dados, consulte
Referência de transcodificação de
qsamevsam. - Suporte para a configuração do processo de transcodificação por meio de um arquivo de configuração do transcodificador. Esse recurso oferece mais flexibilidade ao decodificar dados para Google Cloud e codificá-los de volta para o mainframe.
- Suporte para a criação de um conjunto de dados de transbordamento, que é uma tabela de erros de transcodificação que pode ser usada para inspeção de erros.
- Suporte para vários formatos de entrada e saída. Com esse recurso, é possível carregar dados de e para vários data warehouses.
Transcodificar dados de mainframe localmente e movê-los para o Google Cloud
O Mainframe Connector permite transcodificar dados localmente no mainframe e movê-los para o Cloud Storage. Siga estas etapas:
Crie um job para ler o conjunto de dados no mainframe e transcodificá-lo para o formato ORC. Leia os dados do conjunto de dados
INFILEe o layout do registro do COPYBOOK DD.É possível modificar o comportamento padrão do processo de transcodificação do Mainframe Connector fornecendo um arquivo de configuração do transcodificador usando o argumento
--transcode-configuration.Se o conjunto de dados de entrada for um arquivo de método de acesso sequencial em fila (QSAM, na sigla em inglês) com um comprimento de registro fixo ou variável, use o seguinte comando:
//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 /*Se o conjunto de dados de entrada for um arquivo do método de acesso de armazenamento virtual (VSAM, na sigla em inglês) com um comprimento de registro fixo ou variável, use o seguinte comando:
//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 /*Substitua
BUCKET_NAMEpelo nome do bucket do Cloud Storage para o qual você quer copiar os dados do mainframe.
Neste exemplo, o
DD DataPathé usado para especificar o caminho do copybook, da entrada e da configuração de transcodificação. ConsulteDataPathpara ver outras opções.Para evitar a especificação de variáveis como IDs de projeto e nomes de bucket em cada procedimento de linguagem de controle de jobs (JCL, na sigla em inglês), é possível adicioná-las ao PROCLIB do BQSH e referenciá-las em vários procedimentos de JCL como variáveis de ambiente. Essa abordagem também simplifica a transição entre ambientes de produção e de não produção, já que as variáveis específicas do ambiente são definidas no PROCLIB do BQSH do ambiente.
Se você quiser registrar os comandos executados durante esse processo, ative as estatísticas de carregamento.
Crie e envie um job de carregamento do BigQuery que carregue o arquivo transcodificado para o BigQuery. Por exemplo, se você transcodificou os dados para o formato ORC, é possível carregar as partições de arquivo ORC de
tablename.orcemMY_DATASET.MY_TABLE, da seguinte maneira: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/* /*Substitua:
BUCKET_NAME: o nome do bucket do Cloud Storage que contém os arquivos ORC que você quer carregar no BigQuery.PROJECT_NAME: o nome do projeto em que você quer executar a consulta.
Opcional: crie e envie um job de consulta do BigQuery que execute uma leitura SQL do arquivo DD QUERY. Normalmente, a consulta é uma instrução
MERGEouSELECT INTO DMLque resulta na transformação de uma tabela do BigQuery. O Mainframe Connector registra as métricas do job, mas não grava os resultados da consulta em um arquivo.É possível consultar o BigQuery de várias maneiras: inline, com um conjunto de dados separado usando
DDou com um conjunto de dados separado usandoDSN.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/* /*Substitua:
PROJECT_NAME: o nome do projeto em que você quer executar a consulta.LOCATION: o local onde a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados.
Opcional: crie e envie um job de exportação que execute uma leitura SQL do arquivo QUERY DD e exporte o conjunto de dados resultante para um mainframe como um arquivo binário.
//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/* /*Substitua:
PROJECT_NAME: o nome do projeto em que você quer executar a consulta.LOCATION: o local onde a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados.
É possível modificar o comportamento padrão do processo de transcodificação do Mainframe Connector fornecendo um arquivo de configuração do transcodificador usando o argumento
--transcode-configuration.Os dados são exportados para o conjunto de dados
OUTFILE DD. O layout do registro é descrito peloCOPYBOOK DD. Para outras opções de caminhos de configuração de copybook, arquivo de saída e transcodificação, consulteDataPath.