將大型主機上本機轉碼的資料移至 Google Cloud

本頁說明如何在大型主機上將大型主機資料轉碼為支援的格式,然後將內容移至 BigQuery。轉碼是指將資訊從一種編碼表示法轉換為另一種編碼表示法。本頁面將說明如何使用 Mainframe Connector 將大型主機資料轉碼為最佳化資料列格式 (ORC),然後將資料儲存至 Cloud Storage。

Mainframe Connector 提供兩種方法,可在大型主機上本機轉碼大型主機資料。

qsam 指令的優點

qsam 指令具備下列優點:

  • 支援複合資料類型,包括 OCCURS 子句 (清單)、REDEFINES 子句和巢狀記錄。如要進一步瞭解這些資料類型,請參閱 qsam 轉碼參考資料
  • 支援透過轉碼器設定檔設定轉碼程序。這項功能可在將資料解碼至 Google Cloud並將資料編碼回主機時,提供更大的彈性。
  • 支援建立溢出資料集,這是一張轉碼錯誤表,可用於錯誤檢查。
  • 支援多種輸入和輸出格式。這項功能可讓您將資料載入至各種資料倉儲,或從資料倉儲載出資料。

事前準備

Mainframe Connector 安裝到您要用於程序庫 (PROCLIB) 的任何大型主機分割資料集。

將大型主機上本機轉碼的資料移至 Google Cloud

如要在大型主機上本機轉碼資料,然後將資料移至 BigQuery,您必須執行下列工作:

  1. 讀取並轉碼大型主機上的資料集,然後以 ORC 格式上傳至 Cloud Storage (如要瞭解只有 qsam commands 支援的其他格式,請參閱 TranscodeFormat)。轉碼作業會在 qsam decodegsutil cp 作業期間執行 (取決於您選擇的指令),在將主機架構擴充二進位編碼十進位交換碼 (EBCDIC) 資料集複製到 Cloud Storage 值區時,會將其轉換為 UTF-8 的 ORC 格式。
  2. 將資料集載入 BigQuery 資料表。
  3. (選用) 對 BigQuery 資料表執行 SQL 查詢。
  4. (選用) 將資料從 BigQuery 匯出至主機。

以下各節將詳細說明如何使用 qsam 指令gsutil cp 指令 Google Cloud ,將在主機上轉碼的資料移至雲端。

使用 qsam 指令在本機進行轉碼

如要使用 qsam 指令在大型主機上本機轉碼大型主機資料,請按照下列步驟操作:

  1. 建立工作來讀取主機上的資料集,並將其轉碼為 ORC 格式,如以下指令所示。讀取 INFILE 資料集的資料,以及 COPYBOOK DD 的記錄版面配置。輸入資料集必須是排隊順序存取方法 (QSAM) 檔案,且記錄長度必須為固定或變數。

    您可以使用 --transcode-configuration 引數提供轉碼器設定檔,修改 Mainframe 連接器轉碼程序的預設行為。

    //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
    /*
    

    BUCKET_NAME 替換為您要複製主機資料的 Cloud Storage 值區名稱。

    為避免在每個作業控制語言 (JCL) 程序中指定專案 ID 和值區名稱等變數,您可以在 BQSH PROCLIB 中新增這些變數,並在多個 JCL 程序中以環境變數的形式參照這些變數。由於環境專屬變數會在環境的 BQSH PROCLIB 中設定,因此這種做法也有助於在正式環境和非正式環境之間順利轉換。

    在本例中,DD DataPath 用於指定影本、輸入和轉碼設定的路徑。如需其他選項,請參閱 DataPath

    如要記錄在這項程序中執行的指令,可以啟用載入統計資料

  2. 建立並提交 BigQuery 載入工作,將 ORC 檔案區隔載入 tablename.orcMY_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:Cloud Storage 值區的名稱,其中包含要載入至 BigQuery 的 ORC 檔案。
    • PROJECT_NAME:要執行查詢的專案名稱。
  3. (選用) 建立並提交 BigQuery 查詢作業,執行從 QUERY DD 檔案讀取的 SQL。通常,查詢會是 MERGESELECT INTO DML 陳述式,可轉換 BigQuery 資料表。請注意,主機連接器會記錄工作指標,但不會將查詢結果寫入檔案。

    您可以透過各種方式查詢 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:查詢執行的位置。建議您在靠近資料的位置執行查詢。
  4. (選用) 建立並提交匯出工作,執行從 QUERY DD 檔案讀取的 SQL,並將產生的資料集匯出至大型主機,做為二進位檔案。

    您可以使用 --transcode-configuration 引數提供轉碼器設定檔,修改 Mainframe 連接器轉碼程序的預設行為。

    //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:查詢執行的位置。建議您在靠近資料的位置執行查詢。

    系統會將資料匯出至 OUTFILE DD 資料集。記錄版面配置由 COPYBOOK DD 說明。如需瞭解有關副本簿、輸出檔案和轉碼設定路徑的其他選項,請參閱 DataPath

使用 gsutil cp 指令在本機上轉碼

如要使用 gsutil cp 指令在本機上將大型主機資料轉碼,請按照下列步驟操作:

  1. 建立工作來讀取主機上的資料集,並將其轉碼為 ORC 格式,如以下指令所示。讀取 INFILE 資料集的資料,以及 COPYBOOK DD 的記錄版面配置。輸入資料集必須是排隊順序存取方法 (QSAM) 檔案,且記錄長度必須為固定或變數。

    //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
    /*
    

    BUCKET_NAME 替換為您要複製主機資料的 Cloud Storage 值區名稱。

    為避免在每個 JCL 程序中指定專案 ID 和值區名稱等變數,您可以在 BQSH PROCLIB 中新增這些變數,並在多個 JCL 程序中以環境變數的形式參照這些變數。這種做法也會在實際執行環境和非實際執行環境之間提供無縫轉換,因為環境專屬變數會在環境的 BQSH PROCLIB 中設定。如需 Mainframe Connector 支援的完整環境變數清單,請參閱「環境變數」。

    在這個範例中,標準輸入內容 (STDIN) 會以串流內資料的形式提供給 STDIN DD。或者,您也可以使用資料來源名稱 (DSN) 提供這項輸入內容,這樣就能更輕鬆地管理符號替換作業。

    如要記錄在這項程序中執行的指令,可以啟用載入統計資料

  2. 建立並提交 BigQuery 載入工作,將 ORC 檔案區隔載入 tablename.orcMY_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:Cloud Storage 值區的名稱,其中包含要載入至 BigQuery 的 ORC 檔案。
    • PROJECT_NAME:要執行查詢的專案名稱。
  3. (選用) 建立並提交 BigQuery 查詢作業,執行從 QUERY DD 檔案讀取的 SQL。通常,查詢會是 MERGESELECT INTO DML 陳述式,可轉換 BigQuery 資料表。請注意,主機連接器會記錄工作指標,但不會將查詢結果寫入檔案。

    您可以透過各種方式查詢 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:查詢執行的位置。建議您在靠近資料的位置執行查詢。
  4. (選用) 建立並提交匯出工作,執行從 QUERY DD 檔案讀取的 SQL,並將產生的資料集匯出至大型主機,做為二進位檔案。

    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
    /*
    

    更改下列內容:

    • PROJECT_NAME:要執行查詢的專案名稱。
    • DATASET_ID:包含要匯出的資料表的 BigQuery 資料集 ID。
    • DESTINATION_TABLE:您要匯出的 BigQuery 資料表。

    系統會將資料匯出至 OUTFILE DD 資料集。記錄版面配置由 COPYBOOK DD 說明。