本頁面說明如何將儲存在 Cloud Storage 值區的 SQL 檔案匯入 AlloyDB for PostgreSQL 叢集。SQL 檔案是含有一系列 SQL 指令的純文字檔案。
您可以取消將資料匯入 AlloyDB 叢集。 詳情請參閱「取消匯入作業」。
事前準備
開始匯入作業前,請先完成下列事項:
- 確認資料庫有足夠的可用空間。
- 匯入作業會使用資料庫資源,但除非叢集資源不足,否則不會干擾正常的資料庫作業。
匯入 AlloyDB 時所需的角色和權限
如要將資料從 Cloud Storage 匯入 AlloyDB,發起匯入作業的使用者必須具備下列其中一個角色:
- AlloyDB 管理員角色
- 自訂角色,包括下列權限:
alloydb.clusters.get
alloydb.clusters.import
此外,AlloyDB 叢集的服務帳戶必須具備下列其中一個角色:
storage.objectViewer
IAM 角色- 自訂角色,包括下列權限:
storage.objects.get
如需 IAM 角色相關說明,請參閱「身分與存取權管理」。
將 SQL 檔案匯入 AlloyDB 叢集
如要使用 SQL 檔案將資料匯入 AlloyDB 叢集,請按照下列步驟操作:
主控台
前往「Clusters」(叢集) 頁面。
按一下叢集名稱,開啟該叢集的「總覽」頁面。
按一下「匯入」。
在「選取來源檔案」中,瀏覽 Cloud Storage 並從 bucket 選取 SQL 檔案,或從本機上傳 SQL 檔案以用於匯入。
選取您要匯入資料的目標資料庫。
這樣會使 AlloyDB 在匯入之前執行
USE DATABASE
陳述式。如果 SQL 傾印檔案包含USE DATABASE
陳述式,系統會覆寫您在 Google Cloud 主控台中設定的資料庫。選用:指定匯入作業的使用者。如果匯入檔案包含必須由特定使用者執行的陳述式,請使用此欄位指定該使用者。
如要啟動匯入作業,請按一下「匯入」。
gcloud
- 建立 Cloud Storage 值區。
將 SQL 檔案上傳至值區。 如需將檔案上傳至值區的說明,請參閱「上傳物件」。
使用 gcloud storage buckets add-iam-policy-binding,將
storage.objectViewer
IAM 角色授予 AlloyDB 叢集服務帳戶,允許存取該 bucket:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
請將下列項目改為對應的值:
- CLUSTER_NAME:叢集名稱。
- REGION:部署 AlloyDB 叢集的區域。
- BUCKET_NAME:Cloud Storage 值區名稱。
- FILE_NAME:CSV 檔案的名稱。
- DATABASE_NAME:叢集內的資料庫名稱。
- USER:匯入作業的使用者。
- TABLE_NAME:資料庫中的資料表。
如需設定 IAM 權限的說明,請參閱使用 IAM 權限一文。
匯入檔案:
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sql
如果指令傳回類似
PERMISSION_DENIED
的錯誤,請檢查權限。如要瞭解如何使用
import
指令,請參閱alloydb import
指令參考頁面。如果不需要保留先前設定的 IAM 權限,請使用
gcloud storage buckets remove-iam-policy-binding
移除這些權限。
REST v1
- 建立 Cloud Storage 值區。
- 將 SQL 檔案上傳至值區。 如需將檔案上傳至值區的說明,請參閱「上傳物件」。
授予服務帳戶 Cloud Storage 值區的權限,以進行匯入作業。使用服務帳戶格式,找出要匯入專案的服務帳戶。服務帳戶的格式如下:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
使用 gcloud storage buckets add-iam-policy-binding,將
storage.objectViewer
身分與存取權管理角色授予 AlloyDB 叢集服務帳戶。如需設定 IAM 權限的相關說明,請參閱使用 IAM 權限。匯入 SQL 檔案。
請使用下列 HTTP 方法和網址:
POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID。
- LOCATION_ID:部署 AlloyDB 叢集的區域。
- CLUSTER_ID:叢集 ID。
- BUCKET_NAME:Cloud Storage 值區名稱。
- PATH_TO_SQL_FILE:SQL 檔案的路徑。
- USER:用於匯入的使用者。
- DATABASE_NAME:AlloyDB 叢集內的資料庫名稱。
JSON 要求內文:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE", "database": "DATABASE_NAME", "user": "USER", "sqlImportOptions": {} }
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為
request.json
的檔案中,然後執行下列指令:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
PowerShell (Windows)
將要求主體儲存在名為
request.json
的檔案中,然後執行下列指令:$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
您會收到類似以下的 JSON 回應:
回應
{ "name": "projects/project-id/locations/location-id/operations/operation-id", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2025-01-04T13:12:32.363393723Z", "target": "projects/project-id/locations/location-id/clusters/cluster-id", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
如要使用不同的使用者匯入,請指定使用者屬性。
如果您不需要保留先前設定的 IAM 權限,請立即移除。
如需要求的完整參數清單,請參閱
clusters:import
。
查看匯入作業的狀態
如要查看匯入作業的狀態,請按照下列步驟操作:
gcloud
使用 gcloud alloydb operations describe
指令執行下列操作:
gcloud alloydb operations describe OPERATION_ID --region=REGION
您也可以列出特定作業的詳細資料,或取消特定作業。如要進一步瞭解這個指令,請參閱 gcloud alloydb operations
指令參考頁面。
REST v1
請使用 GET
方法和下列網址:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
詳情請參閱 get
。
使用任何要求資料之前,請先替換以下項目:
- REGION:部署 AlloyDB 叢集的區域。
- PROJECT_ID:專案 ID。
- OPERATION_ID:匯入作業的 ID。詳情請參閱「事前準備」。
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content
您會收到類似以下的 JSON 回應:
如果成功,回應主體會包含 Operation 的執行個體。