Spostare i dati del mainframe transcodificati localmente in Google Cloud

Questa pagina spiega come transcodificare i dati del mainframe localmente sul mainframe in un formato supportato, quindi spostare i contenuti su Google Cloud.

Prima di iniziare

Installa Mainframe Connector in qualsiasi set di dati partizionato del mainframe che vuoi utilizzare come libreria di procedure (PROCLIB).

I comandi qsam e vsam

La transcodifica è il processo di conversione delle informazioni da una forma di rappresentazione codificata a un'altra. Mainframe Connector fornisce i comandi qsam e vsam per transcodificare i dati localmente sul mainframe.

I comandi qsam decode e vsam decode utilizzano un copybook COBOL per convertire i record di un set di dati del mainframe in un formato file come ORC, CSV, JSONL o AVRO e scrivere l'output localmente o in un bucket Cloud Storage. Ad esempio, puoi convertire un set di dati QSAM con codifica EBCDIC in file ORC UTF-8. Per tutti i formati di output supportati, consulta TranscodeFormat.

Il comando qsam encode esegue l'operazione opposta: converte i dati CSV, JSONL, ORC o AVRO o i risultati di una query BigQuery in un set di dati QSAM. Per tutti i formati di input supportati, consulta TranscodeInputFormat.

Questi comandi offrono le seguenti funzionalità:

  • Supporto per i tipi di dati composti, tra cui la clausola OCCURS (elenchi), la clausola REDEFINES e i record nidificati. Per saperne di più su questi tipi di dati, consulta il riferimento per la transcodifica di qsam e vsam.
  • Supporto per la configurazione del processo di transcodifica tramite un file di configurazione del transcodificatore. Questa funzionalità offre una maggiore flessibilità durante la decodifica dei dati in Google Cloud e la codifica dei dati nel mainframe.
  • Supporto per la creazione di un set di dati di spillover, ovvero una tabella di errori di transcodifica che può essere utilizzata per l'ispezione degli errori.
  • Supporto di più formati di input e output. Questa funzionalità ti consente di caricare i dati da e verso vari data warehouse.

Transcodifica i dati del mainframe localmente e spostali in Google Cloud

Mainframe Connector ti consente di transcodificare i dati localmente sul mainframe e poi spostarli in Cloud Storage. Segui questi passaggi:

  1. Crea un job per leggere il set di dati sul mainframe e transcodificarlo nel formato ORC. Leggi i dati dal set di dati INFILE e il layout del record dal COPYBOOK DD.

    Puoi modificare il comportamento predefinito del processo di transcodifica di Mainframe Connector fornendo un file di configurazione del transcodificatore utilizzando l'argomento --transcode-configuration.

    • Se il set di dati di input è un file QSAM (Queued Sequential Access Method) con una lunghezza del record fissa o variabile, utilizza il seguente 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 il set di dati di input è un file VSAM (Virtual Storage Access Method) con una lunghezza del record fissa o variabile, utilizza il seguente 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
      /*
      

      Sostituisci BUCKET_NAME con il nome del bucket Cloud Storage in cui vuoi copiare i dati del mainframe.

    In questo esempio, DD DataPath viene utilizzato per specificare il percorso della configurazione di copybook, input e transcodifica. Per altre opzioni, consulta DataPath.

    Per evitare di specificare variabili come ID progetto e nomi dei bucket in ogni procedura JCL (Job Control Language), puoi aggiungerle nella PROCLIB BQSH e farvi riferimento in diverse procedure JCL come variabili di ambiente. Questo approccio semplifica anche la transizione tra ambienti di produzione e non di produzione, poiché le variabili specifiche dell'ambiente sono impostate nel PROCLIB BQSH dell'ambiente.

    Se vuoi registrare i comandi eseguiti durante questo processo, puoi attivare le statistiche di caricamento.

  2. Crea e invia un job di caricamento BigQuery che carica il file transcodificato in BigQuery. Ad esempio, se hai transcodificato i dati in formato ORC, puoi caricare le partizioni dei file ORC da tablename.orc in MY_DATASET.MY_TABLE, come segue:

    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/*
    /*
    

    Sostituisci quanto segue:

    • BUCKET_NAME: il nome del bucket Cloud Storage che contiene i file ORC che vuoi caricare in BigQuery.
    • PROJECT_NAME: il nome del progetto in cui vuoi eseguire la query.
  3. (Facoltativo) Crea e invia un job di query BigQuery che esegue una lettura SQL dal file QUERY DD. In genere, la query sarà un'istruzione MERGE o SELECT INTO DML che comporta la trasformazione di una tabella BigQuery. Tieni presente che Mainframe Connector registra le metriche dei job, ma non scrive i risultati delle query in un file.

    Puoi eseguire query su BigQuery in vari modi: in linea, con un set di dati separato utilizzando DD o con un set di dati separato utilizzando DSN.

    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/*
    /*
    

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto in cui vuoi eseguire la query.
    • LOCATION: la località in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una località vicina ai dati.
  4. (Facoltativo) Crea e invia un job di esportazione che esegue una lettura SQL dal file QUERY DD ed esporta il set di dati risultante in un mainframe come file binario.

    //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/*
    /*
    

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto in cui vuoi eseguire la query.
    • LOCATION: la località in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una località vicina ai dati.

    Puoi modificare il comportamento predefinito del processo di transcodifica di Mainframe Connector fornendo un file di configurazione del transcodificatore utilizzando l'argomento --transcode-configuration.

    I dati vengono esportati nel set di dati OUTFILE DD. Il layout del record è descritto da COPYBOOK DD. Per altre opzioni relative ai percorsi di configurazione di copybook, outfile e transcodifica, consulta DataPath.