將 Hive 受管理資料表遷移至 Google Cloud
本文說明如何將 Hive 管理的資料表遷移至 Google Cloud。
您可以使用 BigQuery 資料移轉服務中的 Hive 受管理資料表遷移連接器,將 Hive Metastore 管理的資料表從內部部署和雲端環境無縫遷移至 Google Cloud,並支援 Hive 和 Iceberg 格式。我們支援 HDFS 或 Amazon S3 的檔案儲存空間。
使用 Hive 代管資料表遷移連接器,您可以在使用 Cloud Storage 做為檔案儲存空間時,向 Dataproc Metastore、BigLake metastore 或 BigLake metastore Iceberg REST 目錄註冊 Hive 代管資料表。
下圖概略說明從 Hadoop 叢集遷移資料表的程序。

限制
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 時,系統會建立服務代理程式。
設定權限
- 建立服務帳戶,並授予 BigQuery 管理員角色 (
roles/bigquery.admin)。這個服務帳戶用於建立移轉設定。 啟用 Data Transfer API 時,系統會建立服務代理人 (P4SA)。授予下列角色:
roles/metastore.metadataOwnerroles/storagetransfer.adminroles/serviceusage.serviceUsageConsumerroles/storage.objectAdmin- 如果您要遷移 BigLake Iceberg 資料表的中繼資料,也必須授予
roles/bigquery.admin角色。 - 如果您要將中繼資料遷移至 BigLake metastore Iceberg REST 目錄,也必須授予
roles/biglake.admin角色。
- 如果您要遷移 BigLake Iceberg 資料表的中繼資料,也必須授予
使用下列指令,將
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 資料湖泊移轉作業所需的儲存空間移轉代理程式,請按照下列步驟操作:
- 設定權限,在 Hadoop 叢集上執行 Storage 移轉代理程式。
- 在內部部署代理程式機器上安裝 Docker。
- 在 Google Cloud 專案中建立 Storage 移轉服務代理程式集區。
- 在您的地端部署代理程式電腦上安裝代理程式。
設定 Amazon S3 的 Storage 移轉服務權限
如果檔案儲存在 Amazon S3,則為必填欄位。從 Amazon S3 進行的移轉作業不需要代理程式,但需要特定權限。 如要設定 Storage 移轉服務以進行 Amazon S3 移轉作業,請按照下列步驟操作:
- 設定無代理程式轉移權限。
- 設定 AWS Amazon S3 的存取憑證。
- 設定存取憑證後,請記下存取金鑰 ID 和私密存取金鑰。
- 如果 AWS 專案使用 IP 限制,請將 Storage Transfer Service 工作人員使用的 IP 範圍加入 IP 許可清單。
排定 Hive 代管資料表轉移作業
選取下列選項之一:
控制台
前往 Google Cloud 控制台的「資料移轉」頁面。
按一下 「建立轉移作業」。
在「來源類型」部分,從「來源」清單中選取「Hive Managed Tables」。
在「位置」下方選取位置類型,然後選取區域。
在「Transfer config name」(轉移設定名稱) 部分,「Display name」(顯示名稱) 請輸入資料移轉作業的名稱。
在「Schedule options」(排程選項) 部分執行下列操作:
- 在「Repeat frequency」(重複頻率) 清單選取選項,指定這項資料移轉作業的執行頻率。如要指定自訂重複頻率,請選取「Custom」(自訂)。如果選取「On-demand」(隨選),這項移轉作業會在您手動觸發後執行。
- 視情況選取「Start now」(立即開始) 或「Start at set time」(在所設時間開始執行),並提供開始日期和執行時間。
在「Data source details」(資料來源詳細資料) 部分執行下列操作:
- 在「Table name patterns」(資料表名稱格式) 部分,提供符合 HDFS 資料庫中資料表的名稱或格式,指定要轉移的 HDFS 資料湖資料表。您必須使用 Java 規則運算式語法指定表格模式。例如:
db1..*會比對 db1 中的所有資料表。db1.table1;db2.table2會比對 db1 中的 table1 和 db2 中的 table2。
- 在「BQMS discovery dump gcs path」(BQMS 探索傾印 GCS 路徑) 中,輸入包含
hive-dumper-output.zip檔案的 bucket 路徑,該檔案是在為 Apache Hive 建立中繼資料檔案時產生。 - 從下拉式清單中選擇 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 目錄中。
在「Destination gcs path」(目的地 GCS 路徑) 中,輸入 Cloud Storage bucket 的路徑,用來儲存遷移的資料。
選用:在「服務帳戶」中,輸入要用於這項資料移轉作業的服務帳戶。服務帳戶應屬於建立移轉設定和目的地資料集的Google Cloud 專案。
選用:您可以啟用「使用翻譯輸出內容」,為每個要遷移的資料表設定專屬的 Cloud Storage 路徑和資料庫。如要執行這項操作,請在「BQMS translation output gcs path」(BQMS 翻譯輸出 GCS 路徑) 欄位中,提供含有翻譯結果的 Cloud Storage 資料夾路徑。詳情請參閱「設定翻譯輸出內容」。
- 如果您指定 Translation 輸出 Cloud Storage 路徑,系統會從該路徑中的檔案取得目的地 Cloud Storage 路徑和 BigQuery 資料集。
在「儲存空間類型」部分選取下列其中一個選項:
HDFS:如果檔案儲存空間為HDFS,請選取這個選項。在「STS agent pool name」(STS 代理程式集區名稱) 欄位中,您必須提供設定 Storage Transfer Agent 時建立的代理程式集區名稱。S3:如果檔案儲存空間為Amazon S3,請選取這個選項。在「Access key ID」(存取金鑰 ID) 和「Secret access key」(私密存取金鑰) 欄位中,您必須提供設定存取憑證時建立的存取金鑰 ID 和私密存取金鑰。
- 在「Table name patterns」(資料表名稱格式) 部分,提供符合 HDFS 資料庫中資料表的名稱或格式,指定要轉移的 HDFS 資料湖資料表。您必須使用 Java 規則運算式語法指定表格模式。例如:
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 的網址。如果metastore為DATAPROC_METASTORE,則為必要欄位。BIGLAKE_METASTORE_DATASET:BigLake 中繼存放區的 BigQuery 資料集。如果metastore為BIGLAKE_METASTORE,則為必要欄位。TRANSLATION_OUTPUT_BUCKET:(選用) 指定 Cloud Storage bucket 做為翻譯輸出內容的儲存位置。詳情請參閱「使用翻譯輸出內容」。STORAGE_TYPE:指定資料表的基礎檔案儲存空間。支援的類型包括HDFS和S3。AGENT_POOL_NAME:用於建立代理程式的代理程式集區名稱。如果storage_type為HDFS,則為必要欄位。AWS_ACCESS_KEY_ID:存取憑證中的存取金鑰 ID。如果storage_type為S3,則為必要欄位。AWS_SECRET_ACCESS_KEY:存取憑證中的存取密鑰。如果storage_type為S3,則為必要欄位。
執行這項指令,即可建立移轉設定,並開始移轉 Hive 受管理資料表。根據預設,系統每隔 24 小時就會執行移轉作業,但您可以使用移轉排程選項進行設定。
轉移完成後,Hadoop 叢集中的資料表就會遷移至 MIGRATION_BUCKET。
資料擷取選項
以下各節提供更多資訊,說明如何設定 Hive 受管理資料表移轉作業。
增量轉移
如果移轉設定採用週期性時間表,後續每次移轉都會更新 Google Cloud 資料表,反映來源資料表的最新變更。舉例來說,所有插入、刪除或更新作業 (含結構定義變更) 都會反映在 Google Cloud 中,每次轉移都會更新。
轉移排程選項
根據預設,系統會排定每 24 小時執行一次移轉作業。如要設定移轉作業的執行頻率,請在移轉設定中加入 --schedule 標記,並使用schedule 語法指定移轉時間表。Hive 受管理資料表的轉移作業執行間隔至少須為 24 小時。
如要進行一次性移轉,您可以在移轉設定中加入 end_time 旗標,只執行一次移轉。
設定翻譯輸出內容
您可以為每個遷移的資料表設定專屬的 Cloud Storage 路徑和資料庫。如要這麼做,請按照下列步驟產生表格對應 YAML 檔案,以便在轉移設定中使用。
在
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) 運算式。
- 請將
在
DUMPER_BUCKET中建立另一個設定 YAML 檔案 (後置字元為config.yaml),其中包含下列內容:type: experimental_object_rewriter relation: - match: schema: SOURCE_DATABASE outputName: database: null schema: TARGET_DATABASE
- 請將
SOURCE_DATABASE和TARGET_DATABASE替換為來源資料庫名稱,以及 Dataproc Metastore 資料庫或 BigQuery 資料集 (視所選中繼存放區而定)。如果您要為 BigLake 中繼資料存放區設定資料庫,請確認 BigQuery 資料集存在。
如要進一步瞭解這些設定 YAML,請參閱建立設定 YAML 檔案的指南。
- 請將
使用下列指令產生資料表對應 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:處理作業的位置。例如:eu或us。
監控這項工作的狀態。完成後,系統會為
TRANSLATION_OUTPUT_BUCKET中預先定義路徑內的資料庫中每個資料表產生對應檔案。
使用 cron 指令協調執行傾印器
您可以透過 cron 工作執行 dwh-migration-dumper 工具,自動執行增量轉移作業。自動擷取中繼資料可確保 Hadoop 的最新傾印檔可用於後續的增量轉移作業。
事前準備
使用這個自動化指令碼前,請先完成傾印程式安裝必要條件。如要執行指令碼,您必須安裝 dwh-migration-dumper 工具,並設定必要的 IAM 權限。
排定自動化動作的執行時間
將下列指令碼儲存到本機檔案。這個指令碼的設計用途是透過
cronDaemon 進行設定和執行,自動擷取及上傳傾印器輸出內容:#!/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-pathThe base GCS path for output files. (Required)" echo " --local-base-dirThe 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.執行下列指令,讓指令碼變成可執行:
chmod +x PATH_TO_SCRIPT
使用
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
建立移轉作業時,請確保
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 工具前,請先完成下列步驟:
如要取得
dwh-dts-status工具,請從dwh-migration-toolsGitHub 存放區下載dwh-migration-tool封裝。使用下列指令驗證帳戶: Google Cloud
gcloud auth application-default login詳情請參閱「應用程式預設憑證的運作方式」。
確認使用者具備
bigquery.admin和logging.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。
這項指令會輸出表格,列出指定移轉設定中的資料表及其移轉狀態。轉移狀態可以是下列任一值:PENDING、RUNNING、SUCCEEDED、FAILED、CANCELLED。
查看資料庫中所有資料表的狀態
如要查看從特定資料庫轉移的所有資料表狀態,請使用下列指令:
./dwh-dts-status --list-status-for-database --project-id=[PROJECT_ID] --database=[DATABASE]
更改下列內容:
PROJECT_ID:執行轉移作業的 Google Cloud 專案 ID。DATABASE:指定資料庫的名稱。
這項指令會輸出表格,列出指定資料庫中的資料表及其移轉狀態。轉移狀態可以是下列任一值:PENDING、RUNNING、SUCCEEDED、FAILED、CANCELLED。