このページでは、メインフレームのデータをメインフレーム上でローカルにサポートされている形式にコード変換してから、コンテンツを Google Cloudに移動する方法について説明します。
始める前に
プロシージャ ライブラリ(PROCLIB)として使用するメインフレーム パーティション分割データセットに Mainframe Connector をインストールします。
qsam コマンドと vsam コマンド
コード変換とは、ある形式のコード表現から別の形式に情報を変換するプロセスです。Mainframe Connector には、メインフレーム上でローカルにデータをコード変換するための qsam コマンドと vsam コマンドが用意されています。
qsam decode コマンドと vsam decode コマンドは、COBOL コピーブックを使用して、メインフレーム データセットのレコードを ORC、CSV、JSONL、AVRO などのファイル形式に変換し、出力をローカルまたは Cloud Storage バケットに書き込みます。たとえば、EBCDIC でエンコードされた QSAM データセットを UTF-8 ORC ファイルに変換できます。サポートされているすべての出力形式については、TranscodeFormat をご覧ください。
qsam encode コマンドは、その逆を行います。つまり、CSV、JSONL、ORC、AVRO データ、または BigQuery クエリの結果を QSAM データセットに変換します。サポートされているすべての入力形式については、TranscodeInputFormat をご覧ください。
これらのコマンドには次の機能があります。
- OCCURS 句(リスト)、REDEFINES 句、ネストされたレコードなどの複合データ型のサポート。これらのデータ型の詳細については、
qsamとvsamのコード変換リファレンスをご覧ください。 - トランスコーダ構成ファイルによるコード変換プロセスの構成のサポート。この機能により、データを Google Cloudにデコードし、データをメインフレームにエンコードする際の柔軟性が向上します。
- スピルオーバー データセットの作成をサポート。これは、エラー検査に使用できるコード変換エラーのテーブルです。
- 複数の入出力形式のサポート。この機能を使用すると、さまざまなデータ ウェアハウスとの間でデータを読み込むことができます。
メインフレームのデータをローカルでコード変換して Google Cloudに移動する
Mainframe Connector を使用すると、メインフレーム上でローカルにデータをコード変換してから、Cloud Storage に移動できます。手順は次のとおりです。
メインフレーム上のデータセットを読み取り、ORC 形式にコード変換するジョブを作成します。
INFILEデータセットからデータを読み取り、COPYBOOK DD からレコード レイアウトを読み取ります。Mainframe Connector のコード変換プロセスのデフォルトの動作を変更するには、
--transcode-configuration引数を使用してトランスコーダ構成ファイルを指定します。入力データセットが固定または可変レコード長のキューに格納された順次アクセス方式(QSAM)ファイルの場合は、次のコマンドを使用します。
//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 /*入力データセットが固定または可変レコード長の仮想ストレージ アクセス方式(VSAM)ファイルの場合は、次のコマンドを使用します。
//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 /*BUCKET_NAMEは、メインフレーム データをコピーする Cloud Storage バケットの名前に置き換えます。
この例では、
DD DataPathを使用して、コピーブック、入力、コード変換構成のパスを指定します。その他のオプションについては、DataPathをご覧ください。各ジョブ制御言語(JCL)プロシージャでプロジェクト ID やバケット名などの変数を指定しないようにするには、BQSH PROCLIB に追加し、複数の JCL プロシージャで環境変数として参照します。このアプローチでは、環境固有の変数が環境の BQSH PROCLIB に設定されるため、本番環境と非本番環境間の移行も簡素化されます。
このプロセス中に実行されたコマンドをログに記録する場合は、読み込みの統計情報を有効にすることができます。
コード変換されたファイルを BigQuery に読み込む BigQuery 読み込みジョブを作成して送信します。たとえば、データを ORC 形式にコード変換した場合は、次のように ORC ファイル パーティションを
tablename.orcからMY_DATASET.MY_TABLEに読み込むことができます。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/* /*次のように置き換えます。
BUCKET_NAME: BigQuery に読み込む ORC ファイルを含む Cloud Storage バケットの名前。PROJECT_NAME: クエリを実行するプロジェクトの名前。
省略可: QUERY DD ファイルから SQL 読み取りを実行する BigQuery クエリジョブを作成して送信します。通常、クエリは
MERGEまたはSELECT INTO DMLステートメントであり、BigQuery テーブルが変換されます。Mainframe Connector は、ジョブ指標をログに記録しますが、クエリ結果をファイルに書き込みません。BigQuery にはさまざまな方法でクエリできます。インラインでクエリすることも、
DDを使用して別のデータセットを使用してクエリすることもできます。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/* /*次のように置き換えます。
PROJECT_NAME: クエリを実行するプロジェクトの名前。LOCATION: クエリが実行されるロケーション。データの近くのロケーションでクエリを実行することをおすすめします。
省略可: QUERY DD ファイルから SQL 読み取りを実行し、結果のデータセットをバイナリ ファイルとしてメインフレームにエクスポートするエクスポート ジョブを作成して送信します。
//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/* /*次のように置き換えます。
PROJECT_NAME: クエリを実行するプロジェクトの名前。LOCATION: クエリが実行されるロケーション。データに近いロケーションでクエリを実行することをおすすめします。
Mainframe Connector のコード変換プロセスのデフォルトの動作を変更するには、
--transcode-configuration引数を使用してトランスコーダ構成ファイルを指定します。データは
OUTFILE DDデータセットにエクスポートされます。レコード レイアウトはCOPYBOOK DDで記述されます。コピーブック、出力ファイル、コード変換構成パスのその他のオプションについては、DataPathをご覧ください。