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 :
- Prise en charge des types de données composites, y compris la clause OCCURS (listes), la clause REDEFINES et les enregistrements imbriqués. Pour en savoir plus sur ces types de données, consultez la documentation de référence sur le transcodage
qsametvsam. - Possibilité de configurer le processus de transcodage via un fichier de configuration du transcodeur. Cette fonctionnalité offre plus de flexibilité lors du décodage des données vers Google Cloudet de l'encodage des données vers le mainframe.
- Prise en charge de la création d'un ensemble de données de débordement, qui est une table d'erreurs de transcodage pouvant être utilisée pour l'inspection des erreurs.
- Prise en charge de plusieurs formats d'entrée et de sortie. Cette fonctionnalité vous permet de charger vos données vers et depuis différents entrepôts de données.
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 :
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
INFILEet 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_NAMEpar le nom du bucket Cloud Storage dans lequel vous souhaitez copier les données du mainframe.
Dans cet exemple,
DD DataPathest utilisé pour spécifier le chemin d'accès du copybook, de l'entrée et de la configuration de transcodage. ConsultezDataPathpour 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.
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.orcdansMY_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.
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
MERGEouSELECT INTO DMLqui 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
DDou avec un ensemble de données distinct à l'aide deDSN.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.
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 parCOPYBOOK DD. Pour connaître les autres options de chemins de configuration de copybook, de fichier de sortie et de transcodage, consultezDataPath.