En esta página, se explica cómo transcodificar datos de mainframe de forma local en el mainframe a un formato compatible y, luego, mover el contenido a Google Cloud.
Antes de comenzar
Instala Mainframe Connector en cualquier conjunto de datos particionado de la computadora central que quieras usar como biblioteca de procedimientos (PROCLIB).
Los comandos qsam y vsam
La transcodificación es el proceso de convertir información de una forma de representación codificada
a otra. Mainframe Connector proporciona los comandos
qsam y vsam para transcodificar datos de forma local en
la computadora central.
Los comandos qsam decode y vsam decode usan un copybook de COBOL
para convertir los registros de un conjunto de datos de una computadora central en un formato de archivo, como
ORC, CSV, JSONL o AVRO, y escribir el resultado de forma local o en un
bucket de Cloud Storage.
Por ejemplo, puedes convertir un conjunto de datos QSAM codificado en EBCDIC en archivos ORC
UTF-8. Para conocer todos los formatos de salida compatibles, consulta
TranscodeFormat.
El comando qsam encode hace lo contrario: convierte datos CSV, JSONL,
ORC o AVRO, o los resultados de una consulta de BigQuery, en un conjunto de datos
QSAM. Para conocer todos los formatos de entrada compatibles, consulta
TranscodeInputFormat.
Estos comandos proporcionan las siguientes funciones:
- Compatibilidad con tipos de datos compuestos, incluidas la cláusula OCCURS (listas), la cláusula REDEFINES y los registros anidados. Para obtener más información sobre estos tipos de datos, consulta
Referencia de transcodificación de
qsamyvsam. - Compatibilidad con la configuración del proceso de transcodificación a través de un archivo de configuración del transcodificador. Esta capacidad ofrece más flexibilidad cuando se decodifican datos en Google Cloud y se vuelven a codificar en la computadora central.
- Compatibilidad con la creación de un conjunto de datos de desbordamiento, que es una tabla de errores de transcodificación que se puede usar para la inspección de errores.
- Compatibilidad con múltiples formatos de entrada y salida. Esta función te permite cargar tus datos desde y hacia varios almacenes de datos.
Transcodifica los datos de la computadora central de forma local y muévelos a Google Cloud
Mainframe Connector te permite transcodificar datos de forma local en la computadora central y, luego, moverlos a Cloud Storage. Lleva a cabo los pasos siguientes:
Crea un trabajo para leer el conjunto de datos en tu computadora central y transcodificarlo al formato ORC. Lee los datos del conjunto de datos
INFILEy el diseño de registros del COPYBOOK DD.Puedes modificar el comportamiento predeterminado del proceso de transcodificación del Mainframe Connector proporcionando un archivo de configuración del transcodificador con el argumento
--transcode-configuration.Si tu conjunto de datos de entrada es un archivo de método de acceso secuencial en cola (QSAM) con una longitud de registro fija o variable, usa el siguiente 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 /*Si tu conjunto de datos de entrada es un archivo de Virtual Storage Access Method (VSAM) con una longitud de registro fija o variable, usa el siguiente 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 /*Reemplaza
BUCKET_NAMEpor el nombre del bucket de Cloud Storage en el que deseas copiar los datos de la computadora central.
En este ejemplo, se usa
DD DataPathpara especificar la ruta de acceso de la configuración de copybook, entrada y transcodificación. ConsultaDataPathpara conocer otras opciones.Para evitar especificar variables como IDs de proyectos y nombres de bucket en cada procedimiento de lenguaje de control de trabajos (JCL), puedes agregarlas en la PROCLIB de BQSH y hacer referencia a ellas en varios procedimientos de JCL como variables de entorno. Este enfoque también simplifica la transición entre los entornos de producción y no producción, ya que las variables específicas del entorno se establecen en la PROCLIB de BQSH del entorno.
Si quieres registrar los comandos ejecutados durante este proceso, puedes habilitar las estadísticas de carga.
Crea y envía un trabajo de carga de BigQuery que cargue el archivo transcodificado en BigQuery. Por ejemplo, si transcodificaste los datos al formato ORC, puedes cargar las particiones de archivos ORC de
tablename.orcenMY_DATASET.MY_TABLE, de la siguiente manera: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/* /*Reemplaza lo siguiente:
BUCKET_NAME: Es el nombre del bucket de Cloud Storage que contiene los archivos ORC que deseas cargar en BigQuery.PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.
Opcional: Crea y envía un trabajo de consulta de BigQuery que ejecute una lectura de SQL desde el archivo DD de QUERY. Por lo general, la consulta será una declaración
MERGEoSELECT INTO DMLque dará como resultado la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra las métricas de los trabajos, pero no escribe los resultados de las consultas en un archivo.Puedes consultar BigQuery de varias maneras: de forma intercalada, con un conjunto de datos independiente con
DDo con un conjunto de datos independiente conDSN.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/* /*Reemplaza lo siguiente:
PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION: Es la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
Opcional: Crea y envía un trabajo de exportación que ejecute una lectura de SQL desde el archivo QUERY DD y exporte el conjunto de datos resultante a una computadora central como un archivo 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/* /*Reemplaza lo siguiente:
PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION: Es la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
Puedes modificar el comportamiento predeterminado del proceso de transcodificación de Mainframe Connector proporcionando un archivo de configuración del transcodificador con el argumento
--transcode-configuration.Los datos se exportan al conjunto de datos
OUTFILE DD. El diseño del registro se describe en elCOPYBOOK DD. Para conocer otras opciones de rutas de configuración de copybook, outfile y transcodificación, consultaDataPath.