Halaman ini membahas cara mentranskode data mainframe secara lokal di mainframe ke format yang didukung, lalu memindahkan konten ke BigQuery. Transcoding adalah proses mengonversi informasi dari satu bentuk representasi yang dikodekan ke bentuk lain. Halaman ini membahas cara menggunakan Mainframe Connector untuk mentranskode data mainframe ke format kolom baris yang dioptimalkan (ORC), lalu menyimpan data ke Cloud Storage.
Mainframe Connector menyediakan tiga cara untuk mentranskode data mainframe secara lokal di mainframe.
- Menggunakan perintah
qsam
(rilis 5.16.0 dan yang lebih baru) - Menggunakan perintah
vsam decode
(rilis 5.18.0 dan yang lebih baru) - Menggunakan perintah
gsutil cp
Keunggulan perintah qsam
dan vsam
Perintah qsam
dan vsam
memberikan keuntungan berikut:
- Dukungan untuk jenis data gabungan, termasuk klausa OCCURS (daftar), klausa REDEFINES, dan kumpulan data bertingkat. Untuk mengetahui informasi selengkapnya tentang jenis data ini, lihat
Referensi transcoding
qsam
danvsam
. - Dukungan untuk konfigurasi proses transcoding melalui file konfigurasi transcoder. Kemampuan ini menawarkan fleksibilitas yang lebih besar saat mendekode data ke Google Cloud, dan mengenkode data kembali ke mainframe.
- Dukungan untuk pembuatan set data pelimpahan, yang merupakan tabel error transkode yang dapat digunakan untuk pemeriksaan error.
- Dukungan untuk beberapa format input dan output. Dengan kemampuan ini, Anda dapat memuat data ke dan dari berbagai gudang data.
Sebelum memulai
Instal Mainframe Connector ke set data yang dipartisi mainframe yang ingin Anda gunakan sebagai library prosedur (PROCLIB).
Memindahkan data yang ditranskode secara lokal di mainframe ke Google Cloud
Untuk mentranskode data secara lokal di mainframe, lalu memindahkannya ke BigQuery, Anda harus melakukan tugas berikut:
- Membaca dan mentranskode set data di mainframe, lalu menguploadnya ke Cloud Storage dalam format ORC (untuk format lain yang hanya didukung oleh perintah
qsam
atauvsam
, lihat TranscodeFormat). Transcoding dilakukan selama operasiqsam decode
,vsam decode
, ataugsutil cp
(berdasarkan perintah yang Anda pilih), di mana set data mainframe extended binary coded decimal interchange code (EBCDIC) dikonversi ke format ORC dalam UTF-8 selama penyalinan ke bucket Cloud Storage. - Muat set data ke tabel BigQuery.
- (Opsional) Jalankan kueri SQL pada tabel BigQuery.
- (Opsional) Mengekspor data dari BigQuery kembali ke mainframe.
Bagian berikut menjelaskan secara mendetail cara memindahkan data yang ditranskode
secara lokal di mainframe ke Google Cloud menggunakan
qsam
atau vsam
perintah dan
gsutil cp
perintah.
Melakukan transkode secara lokal menggunakan perintah qsam
dan vsam
Untuk mentranskode data mainframe Anda secara lokal di mainframe menggunakan perintah
qsam
atau vsam
, ikuti langkah-langkah berikut:
Buat tugas untuk membaca set data di mainframe Anda dan mentranskodekannya ke format ORC, seperti yang ditunjukkan dalam perintah berikut. Baca data dari set data INFILE, dan tata letak rekaman dari COPYBOOK DD.
Anda dapat mengubah perilaku default proses transkode Mainframe Connector dengan menyediakan file konfigurasi transkoder menggunakan argumen
--transcode-configuration
.Jika set data input Anda adalah file Queued Sequential Access Method (QSAM) dengan panjang rekaman tetap atau variabel, gunakan perintah berikut:
//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 /*
Jika set data input Anda adalah file Virtual Storage Access Method (VSAM) dengan panjang rekaman tetap atau variabel, gunakan perintah berikut:
//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 /*
Ganti
BUCKET_NAME
dengan nama bucket Cloud Storage tempat Anda ingin menyalin data mainframe.Untuk menghindari penentuan variabel seperti ID project dan nama bucket di setiap prosedur bahasa kontrol tugas (JCL), Anda dapat menambahkannya di BQSH PROCLIB dan mereferensikannya di beberapa prosedur JCL sebagai variabel lingkungan. Pendekatan ini juga membantu memberikan transisi yang lancar antara lingkungan produksi dan non-produksi, karena variabel khusus lingkungan ditetapkan di BQSH PROCLIB lingkungan.
Dalam contoh ini,
DD DataPath
digunakan untuk menentukan jalur copybook, input, dan konfigurasi transcoding. LihatDataPath
untuk opsi lainnya.Jika ingin mencatat perintah yang dijalankan selama proses ini, Anda dapat mengaktifkan statistik pemuatan.
Buat dan kirimkan tugas pemuatan BigQuery yang memuat partisi file ORC dari
tablename.orc
keMY_DATASET.MY_TABLE
, sebagai berikut.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/* /*
Ganti kode berikut:
BUCKET_NAME
: nama bucket Cloud Storage yang berisi file ORC yang ingin Anda muat ke BigQuery.PROJECT_NAME
: nama project tempat Anda ingin menjalankan kueri.
(Opsional) Buat dan kirimkan tugas kueri BigQuery yang menjalankan pembacaan SQL dari file DD KUERI. Biasanya, kueri akan berupa pernyataan
MERGE
atauSELECT INTO DML
yang menghasilkan transformasi tabel BigQuery. Perhatikan bahwa Mainframe Connector mencatat log dalam metrik tugas, tetapi tidak menulis hasil kueri ke file.Anda dapat membuat kueri BigQuery dengan berbagai cara - inline, dengan set data terpisah menggunakan DD, atau dengan set data terpisah menggunakan 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/* /*
Ganti kode berikut:
PROJECT_NAME
: nama project tempat Anda ingin menjalankan kueri.LOCATION
: Lokasi tempat kueri akan dieksekusi. Sebaiknya jalankan kueri di lokasi yang dekat dengan data.
(Opsional) Buat dan kirimkan tugas ekspor yang menjalankan pembacaan SQL dari file DD QUERY, dan mengekspor set data yang dihasilkan ke mainframe sebagai file biner.
Anda dapat mengubah perilaku default proses transkode Mainframe Connector dengan memberikan file konfigurasi transkoder menggunakan argumen
--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/* /*
Ganti kode berikut:
PROJECT_NAME
: nama project tempat Anda ingin menjalankan kueri.LOCATION
: Lokasi tempat kueri akan dieksekusi. Sebaiknya jalankan kueri di lokasi yang dekat dengan data.
Data diekspor ke set data OUTFILE DD. Tata letak rekaman dijelaskan oleh COPYBOOK DD. Untuk opsi lain untuk copybook, outfile, dan jalur konfigurasi transkode, lihat
DataPath
.
Transkode secara lokal menggunakan perintah gsutil cp
Untuk mentranskode data mainframe Anda secara lokal di mainframe menggunakan perintah
gsutil cp
, ikuti langkah-langkah berikut:
Buat tugas untuk membaca set data di mainframe Anda dan mentranskodekannya ke format ORC, seperti yang ditunjukkan dalam perintah berikut. Baca data dari set data INFILE, dan tata letak rekaman dari COPYBOOK DD.
Set data input harus berupa file Queued Sequential Access Method (QSAM) dengan panjang rekaman tetap atau variabel.
//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 /*
Ganti
BUCKET_NAME
dengan nama bucket Cloud Storage tempat Anda ingin menyalin data mainframe.Untuk menghindari penentuan variabel seperti ID project dan nama bucket di setiap prosedur JCL, Anda dapat menambahkannya di BQSH PROCLIB dan mereferensikannya di beberapa prosedur JCL sebagai variabel lingkungan. Pendekatan ini juga membantu Anda melakukan transisi yang lancar antara lingkungan produksi dan non-produksi, karena variabel khusus lingkungan ditetapkan di BQSH PROCLIB lingkungan. Untuk mengetahui daftar lengkap variabel lingkungan yang didukung oleh Mainframe Connector, lihat Variabel lingkungan.
Dalam contoh ini, input standar (STDIN) diberikan sebagai data dalam aliran ke STDIN DD. Atau, Anda dapat memberikan input ini menggunakan nama sumber data (DSN), yang memudahkan pengelolaan penggantian simbol.
Jika ingin mencatat perintah yang dijalankan selama proses ini, Anda dapat mengaktifkan statistik pemuatan.
Buat dan kirimkan tugas pemuatan BigQuery yang memuat partisi file ORC dari
tablename.orc
keMY_DATASET.MY_TABLE
, sebagai berikut.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/* /*
Ganti kode berikut:
BUCKET_NAME
: nama bucket Cloud Storage yang berisi file ORC yang ingin Anda muat ke BigQuery.PROJECT_NAME
: nama project tempat Anda ingin menjalankan kueri.
(Opsional) Buat dan kirimkan tugas kueri BigQuery yang menjalankan pembacaan SQL dari file DD KUERI. Biasanya, kueri akan berupa pernyataan
MERGE
atauSELECT INTO DML
yang menghasilkan transformasi tabel BigQuery. Perhatikan bahwa Mainframe Connector mencatat log dalam metrik tugas, tetapi tidak menulis hasil kueri ke file.Anda dapat membuat kueri BigQuery dengan berbagai cara - inline, dengan set data terpisah menggunakan DD, atau dengan set data terpisah menggunakan 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/* /*
Ganti kode berikut:
PROJECT_NAME
: nama project tempat Anda ingin menjalankan kueri.LOCATION
: Lokasi tempat kueri akan dieksekusi. Sebaiknya jalankan kueri di lokasi yang dekat dengan data.
(Opsional) Buat dan kirimkan tugas ekspor yang menjalankan pembacaan SQL dari file DD QUERY, dan mengekspor set data yang dihasilkan ke mainframe sebagai file biner.
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 /*
Ganti kode berikut:
PROJECT_NAME
: Nama project tempat Anda ingin menjalankan kueri.DATASET_ID
: ID set data BigQuery yang berisi tabel yang ingin Anda ekspor.DESTINATION_TABLE
: Tabel BigQuery yang ingin Anda ekspor.
Data diekspor ke set data OUTFILE DD. Tata letak rekaman dijelaskan oleh COPYBOOK DD.