Questa pagina spiega come transcodificare i dati del mainframe localmente sul mainframe in un formato supportato, quindi spostare i contenuti in BigQuery. La transcodifica è il processo di conversione delle informazioni da una forma di rappresentazione codificata a un'altra. Questa pagina illustra come utilizzare Mainframe Connector per transcodificare i dati del mainframe in formato ORC (optimized row columnar) e poi salvarli in Cloud Storage.
Mainframe Connector offre due modi per transcodificare i dati del mainframe localmente sul mainframe.
- Utilizzare i comandi
qsam
(release 5.16.0 e successive) - Utilizzare il comando
gsutil cp
Vantaggi dei comandi qsam
I comandi qsam
offrono i seguenti vantaggi:
- Supporta tipi di dati composti, tra cui la clausola OCCURS (elenchi), la clausola REDEFINES e i record nidificati. Per ulteriori informazioni su questi tipi di dati, consulta
qsam
riferimento alla transcodifica. - Supporta la configurazione del processo di transcodifica tramite un file di configurazione del transcoder. Questa funzionalità offre una maggiore flessibilità per la decodifica dei dati in Google Cloude la loro ricodifica nel mainframe.
- Supporta la creazione di un set di dati spillover, ovvero una tabella di errori di transcodifica che può essere utilizzata per l'ispezione degli errori.
- Supporta più formati di input e output. Questa funzionalità ti consente di caricare i dati da e verso vari data warehouse.
Prima di iniziare
Installa Mainframe Connector su qualsiasi set di dati partizionato per mainframe che vuoi utilizzare come libreria di procedure (PROCLIB).
Sposta i dati transcodificati localmente sul mainframe in Google Cloud
Per transcodificare i dati localmente su un mainframe e poi spostarli in BigQuery, devi eseguire le seguenti attività:
- Leggi e transcodifica un set di dati su un mainframe e caricalo in Cloud Storage nel formato ORC (per altri formati supportati solo dal
qsam commands
, consulta TranscodeFormat). La transcodifica viene eseguita durante le operazioniqsam decode
ogsutil cp
(in base al comando scelto), in cui un set di dati EBCDIC (Extended Binary Coded Decimal Interchange Code) mainframe viene convertito in formato ORC in UTF-8 durante la copia in un bucket Cloud Storage. - Carica il set di dati in una tabella BigQuery.
- (Facoltativo) Esegui una query SQL sulla tabella BigQuery.
- (Facoltativo) Esporta i dati da BigQuery nel mainframe.
Le sezioni seguenti descrivono in dettaglio come spostare i dati transcodificati localmente sul mainframe utilizzando i comandi qsam
e il comando gsutil cp
. Google Cloud
Esegui la transcodifica in locale utilizzando i comandi qsam
Per transcodificare i dati mainframe localmente sul mainframe utilizzando i comandi qsam
:
Crea un job per leggere il set di dati sul mainframe e transcodificarlo nel formato ORC, come mostrato nel comando seguente. Leggi i dati del set di dati INFILE e il layout dei record da COPYBOOK DD. Il set di dati di input deve essere un file QSAM (metodo di accesso sequenziale in coda) con lunghezza del record fissa o variabile.
Puoi modificare il comportamento predefinito del processo di transcodifica di Mainframe Connector fornendo un file di configurazione del transcoder utilizzando l'argomento
--transcode-configuration
.//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 /*
Sostituisci
BUCKET_NAME
con il nome del bucket Cloud Storage in cui vuoi copiare i dati del mainframe.Per evitare di specificare variabili come ID progetto e nomi di bucket in ogni procedura JCL (Job Control Language), puoi aggiungerle in PROCLIB BQSH e farvi riferimento in più procedure JCL come variabili di ambiente. Questo approccio consente inoltre di passare senza problemi dagli ambienti di produzione agli ambienti non di produzione, poiché le variabili specifiche dell'ambiente vengono impostate nella PROCLIB BQSH dell'ambiente.
In questo esempio,
DD DataPath
viene utilizzato per specificare il percorso della configurazione del copybook, dell'input e della transcodifica. Per altre opzioni, consultaDataPath
.Se vuoi registrare i comandi eseguiti durante questa procedura, puoi abilitare le statistiche di caricamento.
Crea e invia un job di caricamento BigQuery che carichi le partizioni dei file ORC da
tablename.orc
inMY_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.
(Facoltativo) Crea ed invia un job di query BigQuery che esegua una lettura SQL dal file DD QUERY. In genere, la query sarà un'istruzione
MERGE
oSELECT 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 distinto utilizzando DD o con un set di dati distinto 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 posizione in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una posizione vicina ai dati.
(Facoltativo) Crea e invia un job di esportazione che esegua una lettura SQL dal file DD QUERY e esporti il set di dati risultante in un mainframe come file binario.
Puoi modificare il comportamento predefinito del processo di transcodifica di Mainframe Connector fornendo un file di configurazione del transcoder utilizzando l'argomento
--transcode-configuration
.//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 posizione in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una posizione vicina ai dati.
I dati vengono esportati nel set di dati OUTFILE DD. Il layout dei record è descritto dal COPYBOOK DD. Per altre opzioni per i percorsi di configurazione di copybook, file di output e transcodifica, vedi
DataPath
.
Esegui la transcodifica localmente utilizzando il comando gsutil cp
Per transcodificare i dati mainframe localmente sul mainframe utilizzando il comando gsutil cp
, segui questi passaggi:
Crea un job per leggere il set di dati sul mainframe e transcodificarlo nel formato ORC, come mostrato nel comando seguente. Leggi i dati del set di dati INFILE e il layout dei record da COPYBOOK DD. Il set di dati di input deve essere un file QSAM (metodo di accesso sequenziale in coda) con lunghezza del record fissa o variabile.
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //STDIN DD * BUCKET=BUCKET_NAME gsutil cp --replace gs://$BUCKET/tablename.orc /*
Sostituisci
BUCKET_NAME
con il nome del bucket Cloud Storage in cui vuoi copiare i dati del mainframe.Per evitare di specificare variabili come ID progetto e nomi dei bucket in ogni procedura JCL, puoi aggiungerle in PROCLIB BQSH e farvi riferimento in più procedure JCL come variabili di ambiente. Questo approccio consente inoltre di eseguire una transizione senza interruzioni tra gli ambienti di produzione e non di produzione, poiché le variabili specifiche per l'ambiente vengono impostate nella PROCLIB BQSH dell'ambiente. Per l'elenco completo delle variabili di ambiente supportate da Mainframe Connector, consulta Variabili di ambiente.
In questo esempio, l'input standard (STDIN) viene fornito come dato in-stream al DD STDIN. In alternativa, puoi fornire questo input utilizzando un nome dell'origine dati (DSN), che semplifica la gestione della sostituzione dei simboli.
Se vuoi registrare i comandi eseguiti durante questa procedura, puoi abilitare le statistiche di caricamento.
Crea e invia un job di caricamento BigQuery che carichi le partizioni dei file ORC da
tablename.orc
inMY_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.
(Facoltativo) Crea ed invia un job di query BigQuery che esegua una lettura SQL dal file DD QUERY. In genere, la query sarà un'istruzione
MERGE
oSELECT 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 distinto utilizzando DD o con un set di dati distinto 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 posizione in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una posizione vicina ai dati.
(Facoltativo) Crea e invia un job di esportazione che esegua una lettura SQL dal file DD QUERY e esporti il set di dati risultante in un mainframe come file binario.
Example JCL //STEP04 EXEC BQSH //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME DATASET_ID=DATASET_ID DESTINATION_TABLE=DESTINATION_TABLE bq export --project_id=$PROJECT \ --dataset_id=$DATASET_ID \ --destination_table=$DESTINATION_TABLE \ --location="US" \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443 /*
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto in cui vuoi eseguire la query.DATASET_ID
: l'ID del set di dati BigQuery che contiene la tabella da esportare.DESTINATION_TABLE
: la tabella BigQuery che vuoi esportare.
I dati vengono esportati nel set di dati OUTFILE DD. Il layout dei record è descritto dal COPYBOOK DD.