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

本頁面說明如何在本機將大型主機資料轉碼為支援的格式,然後將內容移至 Google Cloud。

事前準備

將 Mainframe Connector 安裝至要用做程序程式庫 (PROCLIB) 的任何大型主機分區資料集。

qsam 和 vsam 指令

轉碼是指將資訊從一種編碼表示法轉換為另一種。Mainframe Connector 提供 qsam 和 vsam 指令,可在大型主機本機轉碼資料。

qsam decode 和 vsam decode 指令會使用 COBOL 抄本,將大型主機資料集的記錄轉換為 ORC、CSV、JSONL 或 AVRO 等檔案格式,並將輸出內容寫入本機或 Cloud Storage bucket。舉例來說,您可以將 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。步驟如下:

  1. 建立工作,讀取大型主機上的資料集,並將其轉碼為 ORC 格式。從 INFILE 資料集讀取資料,並從 COPYBOOK DD 讀取記錄版面配置。

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

    • 如果輸入資料集是佇列循序存取方法 (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 bucket 名稱。

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

    如要避免在每個工作控制語言 (JCL) 程序中指定專案 ID 和 bucket 名稱等變數,可以將這些變數新增至 BQSH PROCLIB,並在多個 JCL 程序中將其參照為環境變數。這種方法也能簡化正式環境和非正式環境之間的轉換,因為環境專屬變數是在環境的 BQSH PROCLIB 中設定。

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

  2. 建立並提交 BigQuery 載入工作,將轉碼後的檔案載入 BigQuery。舉例來說,如果您將資料轉碼為 ORC 格式,可以將 tablename.orc 中的 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:Cloud Storage bucket 的名稱,其中包含要載入 BigQuery 的 ORC 檔案。
    • PROJECT_NAME:要執行查詢的專案名稱。
  3. 選用:建立並提交 BigQuery 查詢工作,執行從查詢 DD 檔案讀取 SQL 的作業。查詢通常是 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:執行查詢的位置。 建議您在靠近資料的位置執行查詢。
  4. 選用:建立並提交匯出工作,從 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:執行查詢的位置。 建議您在靠近資料的位置執行查詢。

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

    資料會匯出至 OUTFILE DD 資料集。記錄版面配置由 COPYBOOK DD 描述。如需其他 copybook、outfile 和轉碼設定路徑選項,請參閱 DataPath。