Déplacer des données de mainframe transcodées localement vers Google Cloud

Cette page explique comment transcoder des données de mainframe localement sur le mainframe dans un format compatible, puis déplacer le contenu vers Google Cloud.

Avant de commencer

Installez Mainframe Connector sur n'importe quel ensemble de données partitionné de mainframe que vous souhaitez utiliser comme bibliothèque de procédures (PROCLIB).

Commandes qsam et vsam

Le transcodage est le processus de conversion d'informations d'une forme de représentation codée à une autre. Mainframe Connector fournit les commandes qsam et vsam pour transcoder les données localement sur le mainframe.

Les commandes qsam decode et vsam decode utilisent un copybook COBOL pour convertir les enregistrements d'un ensemble de données mainframe dans un format de fichier tel que ORC, CSV, JSONL ou AVRO, et écrire le résultat localement ou dans un bucket Cloud Storage. Par exemple, vous pouvez convertir un ensemble de données QSAM encodé en EBCDIC en fichiers ORC UTF-8. Pour connaître tous les formats de sortie compatibles, consultez TranscodeFormat.

La commande qsam encode effectue l'opération inverse : elle convertit des données CSV, JSONL, ORC ou AVRO, ou les résultats d'une requête BigQuery, en un ensemble de données QSAM. Pour connaître tous les formats d'entrée compatibles, consultez TranscodeInputFormat.

Ces commandes offrent les fonctionnalités suivantes :

Transcoder les données du mainframe localement et les déplacer vers Google Cloud

Mainframe Connector vous permet de transcoder des données localement sur le mainframe, puis de les déplacer vers Cloud Storage. Procédez comme suit :

  1. Créez un job pour lire l'ensemble de données sur votre mainframe et le transcoder au format ORC. Lire les données de l'ensemble de données INFILE et la mise en page de l'enregistrement à partir de COPYBOOK DD.

    Vous pouvez modifier le comportement par défaut du processus de transcodage du connecteur mainframe en fournissant un fichier de configuration du transcodeur à l'aide de l'argument --transcode-configuration.

    • Si votre ensemble de données d'entrée est un fichier QSAM (Queued Sequential Access Method) avec une longueur d'enregistrement fixe ou variable, utilisez la commande suivante :

      //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
      /*
      
    • Si votre ensemble de données d'entrée est un fichier VSAM (Virtual Storage Access Method) avec une longueur d'enregistrement fixe ou variable, utilisez la commande suivante :

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

      Remplacez BUCKET_NAME par le nom du bucket Cloud Storage dans lequel vous souhaitez copier les données du mainframe.

    Dans cet exemple, DD DataPath est utilisé pour spécifier le chemin d'accès du copybook, de l'entrée et de la configuration de transcodage. Consultez DataPath pour découvrir d'autres options.

    Pour éviter de spécifier des variables telles que les ID de projet et les noms de buckets dans chaque procédure JCL (Job Control Language), vous pouvez les ajouter dans la PROCLIB BQSH et les référencer dans plusieurs procédures JCL en tant que variables d'environnement. Cette approche simplifie également la transition entre les environnements de production et hors production, car les variables spécifiques à l'environnement sont définies dans la PROCLIB BQSH de l'environnement.

    Si vous souhaitez consigner les commandes exécutées au cours de ce processus, vous pouvez activer les statistiques de chargement.

  2. Créez et envoyez un job de chargement BigQuery qui charge le fichier transcodé dans BigQuery. Par exemple, si vous avez transcodé les données au format ORC, vous pouvez charger les partitions de fichiers ORC de tablename.orc dans MY_DATASET.MY_TABLE, comme suit :

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

    Remplacez les éléments suivants :

    • BUCKET_NAME : nom du bucket Cloud Storage contenant les fichiers ORC que vous souhaitez charger dans BigQuery.
    • PROJECT_NAME : nom du projet dans lequel vous souhaitez exécuter la requête.
  3. Facultatif : Créez et envoyez un job de requête BigQuery qui exécute une lecture SQL à partir du fichier DD QUERY. En règle générale, la requête est une instruction MERGE ou SELECT INTO DML qui entraîne la transformation d'une table BigQuery. Notez que Mainframe Connector consigne les métriques des jobs, mais n'écrit pas les résultats des requêtes dans un fichier.

    Vous pouvez interroger BigQuery de différentes manières : de manière intégrée, avec un ensemble de données distinct à l'aide de DD ou avec un ensemble de données distinct à l'aide de 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/*
    /*
    

    Remplacez les éléments suivants :

    • PROJECT_NAME : nom du projet dans lequel vous souhaitez exécuter la requête.
    • LOCATION : emplacement où la requête sera exécutée. Nous vous recommandons d'exécuter la requête dans un emplacement proche des données.
  4. Facultatif : Créez et envoyez un job d'exportation qui exécute une lecture SQL à partir du fichier DD QUERY et exporte l'ensemble de données obtenu vers un système mainframe sous forme de fichier binaire.

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

    Remplacez les éléments suivants :

    • PROJECT_NAME : nom du projet dans lequel vous souhaitez exécuter la requête.
    • LOCATION : emplacement où la requête sera exécutée. Nous vous recommandons d'exécuter la requête dans un emplacement proche des données.

    Vous pouvez modifier le comportement par défaut du processus de transcodage du connecteur Mainframe en fournissant un fichier de configuration du transcodeur à l'aide de l'argument --transcode-configuration.

    Les données sont exportées vers l'ensemble de données OUTFILE DD. La mise en page de l'enregistrement est décrite par COPYBOOK DD. Pour connaître les autres options de chemins de configuration de copybook, de fichier de sortie et de transcodage, consultez DataPath.