將 Hive 受管理資料表遷移至 Google Cloud

本文說明如何將 Hive 管理的資料表遷移至 Google Cloud。

您可以使用 BigQuery 資料移轉服務中的 Hive 受管理資料表遷移連接器,將 Hive Metastore 管理的資料表從內部部署和雲端環境無縫遷移至 Google Cloud,並支援 Hive 和 Iceberg 格式。我們支援 HDFS 或 Amazon S3 的檔案儲存空間。

使用 Hive 代管資料表遷移連接器,您可以在使用 Cloud Storage 做為檔案儲存空間時,向 Dataproc MetastoreBigLake metastoreBigLake metastore Iceberg REST 目錄註冊 Hive 代管資料表。

下圖概略說明從 Hadoop 叢集遷移資料表的程序。

從 Hive 資料湖遷移資料表至 BigQuery 的總覽。

限制

Hive 受管理資料表移轉作業有下列限制:

  • 如要遷移 Apache Iceberg 資料表,您必須向 BigLake metastore 註冊資料表,允許開放原始碼引擎 (例如 Apache Spark 或 Flink) 寫入資料,並允許 BigQuery 讀取資料。
  • 如要遷移 Hive 代管資料表,您必須向 Dataproc Metastore 註冊資料表,允許開放原始碼引擎寫入存取權,並允許 BigQuery 讀取存取權。
  • 您必須使用 bq 指令列工具,將 Hive 受管理資料表遷移至 BigQuery。

事前準備

排定 Hive 代管資料表轉移作業之前,請先執行下列操作:

產生 Apache Hive 的中繼資料檔案

執行 dwh-migration-dumper 工具,擷取 Apache Hive 的中繼資料。這項工具會產生名為 hive-dumper-output.zip 的檔案,並儲存至 Cloud Storage bucket (本文稱為 DUMPER_BUCKET)。

啟用 API

在Google Cloud 專案中啟用下列 API

  • Data Transfer API
  • Storage Transfer API

啟用 Data Transfer API 時,系統會建立服務代理程式

設定權限

  1. 建立服務帳戶,並授予 BigQuery 管理員角色 (roles/bigquery.admin)。這個服務帳戶用於建立移轉設定。
  2. 啟用 Data Transfer API 時,系統會建立服務代理人 (P4SA)。授予下列角色:

    • roles/metastore.metadataOwner
    • roles/storagetransfer.admin
    • roles/serviceusage.serviceUsageConsumer
    • roles/storage.objectAdmin
      • 如果您要遷移 BigLake Iceberg 資料表的中繼資料,也必須授予 roles/bigquery.admin 角色。
      • 如果您要將中繼資料遷移至 BigLake metastore Iceberg REST 目錄,也必須授予 roles/biglake.admin 角色。
  3. 使用下列指令,將 roles/iam.serviceAccountTokenCreator 角色授予服務代理程式:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator

為 HDFS 資料湖泊設定 Storage Transfer Agent

如果檔案儲存在 HDFS 中,則為必要項目。如要設定 HDFS 資料湖泊移轉作業所需的儲存空間移轉代理程式,請按照下列步驟操作:

  1. 設定權限,在 Hadoop 叢集上執行 Storage 移轉代理程式。
  2. 在內部部署代理程式機器上安裝 Docker
  3. 在 Google Cloud 專案中建立 Storage 移轉服務代理程式集區
  4. 在您的地端部署代理程式電腦上安裝代理程式

設定 Amazon S3 的 Storage 移轉服務權限

如果檔案儲存在 Amazon S3,則為必填欄位。從 Amazon S3 進行的移轉作業不需要代理程式,但需要特定權限。 如要設定 Storage 移轉服務以進行 Amazon S3 移轉作業,請按照下列步驟操作:

  1. 設定無代理程式轉移權限
  2. 設定 AWS Amazon S3 的存取憑證
    • 設定存取憑證後,請記下存取金鑰 ID 和私密存取金鑰。
  3. 如果 AWS 專案使用 IP 限制,請將 Storage Transfer Service 工作人員使用的 IP 範圍加入 IP 許可清單。

排定 Hive 代管資料表轉移作業

選取下列選項之一:

控制台

  1. 前往 Google Cloud 控制台的「資料移轉」頁面。

    前往「資料轉移」頁面

  2. 按一下 「建立轉移作業」

  3. 在「來源類型」部分,從「來源」清單中選取「Hive Managed Tables」

  4. 在「位置」下方選取位置類型,然後選取區域。

  5. 在「Transfer config name」(轉移設定名稱) 部分,「Display name」(顯示名稱) 請輸入資料移轉作業的名稱。

  6. 在「Schedule options」(排程選項) 部分執行下列操作:

    • 在「Repeat frequency」(重複頻率) 清單選取選項,指定這項資料移轉作業的執行頻率。如要指定自訂重複頻率,請選取「Custom」(自訂)。如果選取「On-demand」(隨選),這項移轉作業會在您手動觸發後執行。
    • 視情況選取「Start now」(立即開始) 或「Start at set time」(在所設時間開始執行),並提供開始日期和執行時間。
  7. 在「Data source details」(資料來源詳細資料) 部分執行下列操作:

    1. 在「Table name patterns」(資料表名稱格式) 部分,提供符合 HDFS 資料庫中資料表的名稱或格式,指定要轉移的 HDFS 資料湖資料表。您必須使用 Java 規則運算式語法指定表格模式。例如:
      • db1..* 會比對 db1 中的所有資料表。
      • db1.table1;db2.table2 會比對 db1 中的 table1 和 db2 中的 table2。
    2. 在「BQMS discovery dump gcs path」(BQMS 探索傾印 GCS 路徑) 中,輸入包含 hive-dumper-output.zip 檔案的 bucket 路徑,該檔案是在為 Apache Hive 建立中繼資料檔案時產生。
    3. 從下拉式清單中選擇 Metastore 類型:
      • DATAPROC_METASTORE:選取這個選項,將中繼資料儲存在 Dataproc Metastore 中。您必須在「Dataproc metastore url」(Dataproc Metastore 網址) 中提供 Dataproc Metastore 的網址。
      • BIGLAKE_METASTORE:選取這個選項,將中繼資料儲存在 BigLake metastore。您必須在「BigQuery 資料集」中提供 BigQuery 資料集。
      • BIGLAKE_REST_CATALOG:選取這個選項,將中繼資料儲存在 BigLake metastore Iceberg REST 目錄中。
    4. 「Destination gcs path」(目的地 GCS 路徑) 中,輸入 Cloud Storage bucket 的路徑,用來儲存遷移的資料。

    5. 選用:在「服務帳戶」中,輸入要用於這項資料移轉作業的服務帳戶。服務帳戶應屬於建立移轉設定和目的地資料集的Google Cloud 專案。

    6. 選用:您可以啟用「使用翻譯輸出內容」,為每個要遷移的資料表設定專屬的 Cloud Storage 路徑和資料庫。如要執行這項操作,請在「BQMS translation output gcs path」(BQMS 翻譯輸出 GCS 路徑) 欄位中,提供含有翻譯結果的 Cloud Storage 資料夾路徑。詳情請參閱「設定翻譯輸出內容」。

      • 如果您指定 Translation 輸出 Cloud Storage 路徑,系統會從該路徑中的檔案取得目的地 Cloud Storage 路徑和 BigQuery 資料集。
    7. 在「儲存空間類型」部分選取下列其中一個選項:

      • HDFS:如果檔案儲存空間為 HDFS,請選取這個選項。在「STS agent pool name」(STS 代理程式集區名稱) 欄位中,您必須提供設定 Storage Transfer Agent 時建立的代理程式集區名稱。
      • S3:如果檔案儲存空間為 Amazon S3,請選取這個選項。在「Access key ID」(存取金鑰 ID) 和「Secret access key」(私密存取金鑰) 欄位中,您必須提供設定存取憑證時建立的存取金鑰 ID 和私密存取金鑰。

bq

如要排定 Hive 受管理資料表移轉作業,請輸入 bq mk 指令並加上移轉建立作業旗標 --transfer_config

  bq mk --transfer_config
  --data_source=hadoop
  --display_name='TRANSFER_NAME'
  --service_account_name='SERVICE_ACCOUNT'
  --project_id='PROJECT_ID'
  --location='REGION'
  --params='{"table_name_patterns":"LIST_OF_TABLES",
    "table_metadata_path":"gs://DUMPER_BUCKET/hive-dumper-output.zip",
    "target_gcs_file_path":"gs://MIGRATION_BUCKET",
    "metastore":"METASTORE",
    "destination_dataproc_metastore":"DATAPROC_METASTORE_URL",
    "destination_bigquery_dataset":"BIGLAKE_METASTORE_DATASET",
    "translation_output_gcs_path":"gs://TRANSLATION_OUTPUT_BUCKET/metadata/config/default_database/",
    "storage_type":"STORAGE_TYPE",
    "agent_pool_name":"AGENT_POOL_NAME",
    "aws_access_key_id":"AWS_ACCESS_KEY_ID",
    "aws_secret_access_key":"AWS_SECRET_ACCESS_KEY"
    }'

更改下列內容:

  • TRANSFER_NAME:移轉設定的顯示名稱。移轉作業名稱可以是任意值,日後需要修改移轉作業時,能夠據此識別即可。
  • SERVICE_ACCOUNT:用於驗證轉移作業的服務帳戶名稱。服務帳戶應由用於建立轉移作業的 project_id 擁有,且應具備所有必要權限。
  • PROJECT_ID:您的 Google Cloud 專案 ID。如未提供 --project_id 指定特定專案,系統會使用預設專案。
  • REGION:這項移轉設定的位置。
  • LIST_OF_TABLES:要轉移的實體清單。使用階層式命名規格 - database.table。這個欄位支援 RE2 規則運算式,可指定資料表。例如:
    • db1..*:指定資料庫中的所有資料表
    • db1.table1;db2.table2:資料表清單
  • DUMPER_BUCKET:包含 hive-dumper-output.zip 檔案的 Cloud Storage bucket。
  • MIGRATION_BUCKET:所有基礎檔案的載入目的地 GCS 路徑。
  • METASTORE:要遷移的 Metastore 類型。將此值設為下列其中一個值:
    • DATAPROC_METASTORE:將中繼資料轉移至 Dataproc Metastore。
    • BIGLAKE_METASTORE:將中繼資料轉移至 BigLake metastore。
    • BIGLAKE_REST_CATALOG:將中繼資料轉移至 BigLake metastore Iceberg REST Catalog。
  • DATAPROC_METASTORE_URL:Dataproc Metastore 的網址。如果 metastoreDATAPROC_METASTORE,則為必要欄位。
  • BIGLAKE_METASTORE_DATASET:BigLake 中繼存放區的 BigQuery 資料集。如果 metastoreBIGLAKE_METASTORE,則為必要欄位。
  • TRANSLATION_OUTPUT_BUCKET:(選用) 指定 Cloud Storage bucket 做為翻譯輸出內容的儲存位置。詳情請參閱「使用翻譯輸出內容」。
  • STORAGE_TYPE:指定資料表的基礎檔案儲存空間。支援的類型包括 HDFSS3
  • AGENT_POOL_NAME:用於建立代理程式的代理程式集區名稱。如果 storage_typeHDFS,則為必要欄位。
  • AWS_ACCESS_KEY_ID存取憑證中的存取金鑰 ID。如果 storage_typeS3,則為必要欄位。
  • AWS_SECRET_ACCESS_KEY存取憑證中的存取密鑰。如果 storage_typeS3,則為必要欄位。

執行這項指令,即可建立移轉設定,並開始移轉 Hive 受管理資料表。根據預設,系統每隔 24 小時就會執行移轉作業,但您可以使用移轉排程選項進行設定。

轉移完成後,Hadoop 叢集中的資料表就會遷移至 MIGRATION_BUCKET

資料擷取選項

以下各節提供更多資訊,說明如何設定 Hive 受管理資料表移轉作業。

增量轉移

如果移轉設定採用週期性時間表,後續每次移轉都會更新 Google Cloud 資料表,反映來源資料表的最新變更。舉例來說,所有插入、刪除或更新作業 (含結構定義變更) 都會反映在 Google Cloud 中,每次轉移都會更新。

轉移排程選項

根據預設,系統會排定每 24 小時執行一次移轉作業。如要設定移轉作業的執行頻率,請在移轉設定中加入 --schedule 標記,並使用schedule 語法指定移轉時間表。Hive 受管理資料表的轉移作業執行間隔至少須為 24 小時。

如要進行一次性移轉,您可以在移轉設定中加入 end_time 旗標,只執行一次移轉。

設定翻譯輸出內容

您可以為每個遷移的資料表設定專屬的 Cloud Storage 路徑和資料庫。如要這麼做,請按照下列步驟產生表格對應 YAML 檔案,以便在轉移設定中使用。

  1. DUMPER_BUCKET 中建立設定 YAML 檔案 (後置字串為 config.yaml),並包含下列內容:

        type: object_rewriter
        relation:
        - match:
            relationRegex: ".*"
          external:
            location_expression: "'gs://MIGRATION_BUCKET/' + table.schema + '/' + table.name"
    • 請將 MIGRATION_BUCKET 改成 Cloud Storage 值區名稱,這是遷移資料表檔案的目的地。location_expression 欄位是一般運算語言 (CEL) 運算式。
  2. DUMPER_BUCKET 中建立另一個設定 YAML 檔案 (後置字元為 config.yaml),其中包含下列內容:

        type: experimental_object_rewriter
        relation:
          - match:
              schema: SOURCE_DATABASE
            outputName:
              database: null
              schema: TARGET_DATABASE
    • 請將 SOURCE_DATABASETARGET_DATABASE 替換為來源資料庫名稱,以及 Dataproc Metastore 資料庫或 BigQuery 資料集 (視所選中繼存放區而定)。如果您要為 BigLake 中繼資料存放區設定資料庫,請確認 BigQuery 資料集存在。

    如要進一步瞭解這些設定 YAML,請參閱建立設定 YAML 檔案的指南

  3. 使用下列指令產生資料表對應 YAML 檔案:

    curl -d '{
      "tasks": {
          "string": {
            "type": "HiveQL2BigQuery_Translation",
            "translation_details": {
                "target_base_uri": "TRANSLATION_OUTPUT_BUCKET",
                "source_target_mapping": {
                  "source_spec": {
                      "base_uri": "DUMPER_BUCKET"
                  }
                },
                "target_types": ["metadata"]
            }
          }
      }
      }' \
      -H "Content-Type:application/json" \
      -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

    更改下列內容:

    • TRANSLATION_OUTPUT_BUCKET:(選用) 指定 Cloud Storage 值區做為翻譯輸出內容的儲存位置。詳情請參閱「使用翻譯輸出內容」。
    • DUMPER_BUCKET:Cloud Storage 值區的基本 URI,其中包含 hive-dumper-output.zip 和設定 YAML 檔案。
    • TOKEN:OAuth 權杖。您可以在指令列中,使用 gcloud auth print-access-token 指令產生這項檔案。
    • PROJECT_ID:用於處理翻譯作業的專案。
    • LOCATION:處理作業的位置。例如:euus
  4. 監控這項工作的狀態。完成後,系統會為 TRANSLATION_OUTPUT_BUCKET 中預先定義路徑內的資料庫中每個資料表產生對應檔案。

使用 cron 指令協調執行傾印器

您可以透過 cron 工作執行 dwh-migration-dumper 工具,自動執行增量轉移作業。自動擷取中繼資料可確保 Hadoop 的最新傾印檔可用於後續的增量轉移作業。

事前準備

使用這個自動化指令碼前,請先完成傾印程式安裝必要條件。如要執行指令碼,您必須安裝 dwh-migration-dumper 工具,並設定必要的 IAM 權限。

排定自動化動作的執行時間

  1. 將下列指令碼儲存到本機檔案。這個指令碼的設計用途是透過 cron Daemon 進行設定和執行,自動擷取及上傳傾印器輸出內容:

    #!/bin/bash
    
    # Exit immediately if a command exits with a non-zero status.
    set -e
    # Treat unset variables as an error when substituting.
    set -u
    # Pipelines return the exit status of the last command to exit with a non-zero status.
    set -o pipefail
    
    # These values are used if not overridden by command-line options.
    DUMPER_EXECUTABLE="DUMPER_PATH/dwh-migration-dumper"
    GCS_BASE_PATH="gs://PATH_TO_DUMPER_OUTPUT"
    LOCAL_BASE_DIR="LOCAL_BASE_DIRECTORY_PATH"
    
    # Function to display usage information
    usage() {
      echo "Usage: $0 [options]"
      echo ""
      echo "Runs the dwh-migration-dumper tool and uploads its output to provided GCS path."
      echo ""
      echo "Options:"
      echo "  --dumper-executable   The full path to the dumper executable. (Required)"
      echo "  --gcs-base-path       The base GCS path for output files. (Required)"
      echo "  --local-base-dir      The local base directory for logs and temp files. (Required)"
      echo "  -h, --help                  Display this help message and exit."
      exit 1
    }
    
    # This loop processes command-line options and overrides the default configuration.
    while [[ "$#" -gt 0 ]]; do
      case $1 in
          --dumper-executable)
              DUMPER_EXECUTABLE="$2"
              shift # past argument
              shift # past value
              ;;
          --gcs-base-path)
              GCS_BASE_PATH="$2"
              shift
              shift
              ;;
          --local-base-dir)
              LOCAL_BASE_DIR="$2"
              shift
              shift
              ;;
          -h|--help)
              usage
              ;;
          *)
              echo "Unknown option: $1"
              usage
              ;;
      esac
    done
    
    # This runs AFTER parsing arguments to ensure no placeholder values are left.
    if [[ "$DUMPER_EXECUTABLE" == "DUMPER_PATH"* || "$GCS_BASE_PATH" == "gs://PATH_TO_DUMPER_OUTPUT" || "$LOCAL_BASE_DIR" == "LOCAL_BASE_DIRECTORY_PATH" ]]; then
      echo "ERROR: One or more configuration variables have not been set. Please provide them as command-line arguments or edit the script." >&2
      echo "Run with --help for more information." >&2
      exit 1
    fi
    
    # Create unique timestamp and directories for this run
    EPOCH=$(date +%s)
    LOCAL_LOG_DIR="${LOCAL_BASE_DIR}/logs"
    mkdir -p "${LOCAL_LOG_DIR}" # Ensures the base and logs directories exist
    
    # Define the unique log and zip file path for this run
    LOG_FILE="${LOCAL_LOG_DIR}/dumper_execution_${EPOCH}.log"
    ZIP_FILE_NAME="hive-dumper-output_${EPOCH}.zip"
    LOCAL_ZIP_PATH="${LOCAL_BASE_DIR}/${ZIP_FILE_NAME}"
    
    echo "Script execution started. All subsequent output will be logged to: ${LOG_FILE}"
    
    # --- Helper Functions ---
    
    log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $@" >> "${LOG_FILE}"}
    
    cleanup() {
      local path_to_remove="$1"
      log "Cleaning up local file/directory: ${path_to_remove}..."
      rm -rf "${path_to_remove}"
    }
    
    # This function is called when the script exits to ensure cleanup and logging happen reliably.
    handle_exit() {
      local exit_code=$?
      # Only run the failure logic if the script is exiting with an error
      if [[ ${exit_code} -ne 0 ]]; then
          log "ERROR: Script is exiting with a failure code (${exit_code})."
          local gcs_log_path_on_failure="${GCS_BASE_PATH}/logs/$(basename "${LOG_FILE}")"
          log "Uploading log file to ${gcs_log_path_on_failure} for debugging..."
          # Attempt to upload the log file on failure, but don't let this command cause the script to exit.
          gsutil cp "${LOG_FILE}" "${gcs_log_path_on_failure}" > /dev/null 2>&1 || log "WARNING: Failed to upload log file to GCS."
    
      else
          # SUCCESS PATH
          log "Script finished successfully. Now cleaning up local zip file...."
          # Clean up the local zip file ONLY on success
          cleanup "${LOCAL_ZIP_PATH}"
      fi
    
      log "*****Script End*****"
      exit ${exit_code}
    }
    
    # Trap the EXIT signal to run the handle_exit function, ensuring cleanup always happens.
    trap handle_exit EXIT
    
    # Validates the dumper log file based on a strict set of rules.
    validate_dumper_output() {
      local log_file_to_check="$1"
    
      # Check for the specific success message from the dumper tool.
      if grep -q "Dumper execution: SUCCEEDED" "${log_file_to_check}"; then
          log "Validation Successful: Found 'Dumper execution: SUCCEEDED' message."
          return 0 # Success
      else
          log "ERROR: Validation failed. The 'Dumper execution: SUCCEEDED' message was not found."
          return 1 # Failure
      fi
    }
    
    # --- Main Script Logic ---
    
    log "*****Script Start*****"
    log "Dumper Executable: ${DUMPER_EXECUTABLE}"
    log "GCS Base Path: ${GCS_BASE_PATH}"
    log "Local Base Directory: ${LOCAL_BASE_DIR}"
    
    # Use an array to build the command safely
    dumper_command_args=(
      "--connector" "hiveql"
      "--output" "${LOCAL_ZIP_PATH}"
    )
    
    log "Starting dumper tool execution..."
    log "COMMAND: ${DUMPER_EXECUTABLE} ${dumper_command_args[*]}"
    
    "${DUMPER_EXECUTABLE}" "${dumper_command_args[@]}" >> "${LOG_FILE}" 2>&1
    
    log "Dumper process finished."
    
    # Validate the output from the dumper execution for success or failure.
    validate_dumper_output "${LOG_FILE}"
    
    # Upload the ZIP file to GCS
    gcs_zip_path="${GCS_BASE_PATH}/${ZIP_FILE_NAME}"
    log "Uploading ${LOCAL_ZIP_PATH} to ${gcs_zip_path}..."
    
    if [ ! -f "${LOCAL_ZIP_PATH}" ]; then
      log "ERROR: Expected ZIP file ${LOCAL_ZIP_PATH} not found after dumper execution."
      # The script will exit here with an error code, and the trap will run.
      exit 1
    fi
    
    gsutil cp "${LOCAL_ZIP_PATH}" "${gcs_zip_path}" >> "${LOG_FILE}" 2>&1
    log "Upload to GCS successful."
    
    # The script will now exit with code 0. The trap will call cleanup and log the script end.
  2. 執行下列指令,讓指令碼變成可執行:

    chmod +x PATH_TO_SCRIPT
  3. 使用 crontab 排定指令碼,並將變數換成適合工作的適當值。新增項目來排定工作。 下列範例會在每天凌晨 2:30 執行指令碼:

    # Run the Hive dumper daily at 2:30 AM for incremental BigQuery transfer.
    30 2 * * * PATH_TO_SCRIPT \
      --dumper-executable PATH_TO_DUMPER_EXECUTABLE \
      --gcs-base-path GCS_PATH_TO_UPLOAD_DUMPER_OUTPUT \
      --local-base-dir LOCAL_PATH_TO_SAVE_INTERMEDIARY_FILES
  4. 建立移轉作業時,請確保 table_metadata_path 欄位設為您為 GCS_PATH_TO_UPLOAD_DUMPER_OUTPUT 設定的相同 Cloud Storage 路徑。這是包含傾印器輸出 ZIP 檔案的路徑。

排程注意事項

為避免資料過時,請務必在排定的轉移作業開始前,準備好中繼資料傾印。請視情況設定 cron 工作頻率。

建議您手動執行幾次指令碼,判斷傾印工具產生輸出內容的平均時間。請利用這個時間點設定 cron 排程,確保排程安全地在 DTS 轉移作業執行前完成,並確保資料是最新狀態。

監控 Hive 代管資料表轉移作業

排定 Hive 受管理資料表轉移作業後,您可以使用 bq 指令列工具指令監控轉移工作。如要瞭解如何監控轉移作業,請參閱「查看轉移作業」。

追蹤表格遷移狀態

您也可以執行 dwh-dts-status 工具,監控轉移設定或特定資料庫中所有轉移資料表的狀態。您也可以使用 dwh-dts-status 工具列出專案中的所有移轉設定。

事前準備

使用 dwh-dts-status 工具前,請先完成下列步驟:

  1. 如要取得 dwh-dts-status 工具,請從 dwh-migration-tools GitHub 存放區下載 dwh-migration-tool 封裝。

  2. 使用下列指令驗證帳戶: Google Cloud

    gcloud auth application-default login
    

    詳情請參閱「應用程式預設憑證的運作方式」。

  3. 確認使用者具備 bigquery.adminlogging.viewer 角色。如要進一步瞭解 IAM 角色,請參閱「存取控管參考資料」。

列出專案中的所有移轉設定

如要列出專案中的所有移轉設定,請使用下列指令:

  ./dwh-dts-status --list-transfer-configs --project-id=[PROJECT_ID] --location=[LOCATION]

更改下列內容:

  • PROJECT_ID:執行轉移作業的 Google Cloud 專案 ID。
  • LOCATION:建立轉移設定的位置。

這項指令會輸出表格,其中列出移轉設定名稱和 ID。

查看設定中所有表格的狀態

如要查看移轉設定中所有資料表的狀態,請使用下列指令:

  ./dwh-dts-status --list-status-for-config --project-id=[PROJECT_ID] --config-id=[CONFIG_ID] --location=[LOCATION]

更改下列內容:

  • PROJECT_ID:執行轉移作業的 Google Cloud 專案 ID。
  • LOCATION:建立轉移設定的位置。
  • CONFIG_ID:指定轉移設定的 ID。

這項指令會輸出表格,列出指定移轉設定中的資料表及其移轉狀態。轉移狀態可以是下列任一值:PENDINGRUNNINGSUCCEEDEDFAILEDCANCELLED

查看資料庫中所有資料表的狀態

如要查看從特定資料庫轉移的所有資料表狀態,請使用下列指令:

  ./dwh-dts-status --list-status-for-database --project-id=[PROJECT_ID] --database=[DATABASE]

更改下列內容:

  • PROJECT_ID:執行轉移作業的 Google Cloud 專案 ID。
  • DATABASE:指定資料庫的名稱。

這項指令會輸出表格,列出指定資料庫中的資料表及其移轉狀態。轉移狀態可以是下列任一值:PENDINGRUNNINGSUCCEEDEDFAILEDCANCELLED