如要將表格型資料載入現有資料庫資料表,可以將儲存在 Cloud Storage bucket 的 CSV 檔案匯入 AlloyDB for PostgreSQL 叢集。
您可以取消將資料匯入 AlloyDB 叢集。詳情請參閱「取消匯入作業」。
事前準備
開始匯入作業前:
- 確認資料庫有足夠的可用空間。
- 匯入作業會使用資料庫資源,但除非叢集佈建不足,否則不會干擾正常的資料庫作業。
匯入 AlloyDB 叢集所需的角色和權限
如要將資料從 Cloud Storage 匯入 AlloyDB,發起匯入作業的使用者必須具備下列其中一個角色:
- AlloyDB 管理員角色
- 自訂角色,包含下列權限:
alloydb.clusters.getalloydb.clusters.import
此外,AlloyDB 叢集的服務帳戶必須具備下列其中一個角色:
storage.objectViewerIAM 角色- 自訂角色,包含下列權限:
storage.objects.get
如需 IAM 角色相關協助,請參閱「Identity and Access Management」。
將 CSV 檔案中的資料匯入 AlloyDB 叢集
- 要匯入的資料庫和資料表必須存在於 AlloyDB 叢集。如需建立資料庫的相關說明,請參閱「建立資料庫」。
- CSV 檔案的每列資料都必須為獨立的一行,並以半形逗號分隔不同欄位。
- CSV 檔案不得包含標頭列。如果 CSV 檔案有標頭列,請先移除再匯入。
如要使用 CSV 檔案將資料匯入 AlloyDB 叢集,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
按一下叢集名稱,開啟該叢集的「Overview」(總覽) 頁面。
按一下「匯入」。
在「檔案格式」部分,選取「CSV」。
在「Select source file」(選取來源檔案) 中,選擇要從電腦上傳檔案,還是從 Cloud Storage 位置選取檔案。
如要從電腦上傳檔案,請按照下列步驟操作:
- 選取「Upload files from your computer」(上傳電腦中的檔案)。
- 按一下「選取本機檔案」旁的「瀏覽」,從本機電腦選取 CSV 檔案。
- 按一下「選取 Cloud Storage 位置」旁的「瀏覽」,選取要儲存上傳本機檔案的 Cloud Storage 位置。
- 按一下「上傳」即可上傳檔案。
如要選取 Cloud Storage bucket 中的 CSV 檔案,請按照下列步驟操作:
- 選取「從 Google Cloud Storage 選取檔案」。
- 按一下「bucket-name/file-name」旁的「瀏覽」,從 Cloud Storage bucket 選取 CSV 檔案。
從「Database」(資料庫) 下拉式選單中,選取要匯入資料的資料庫。
從「Table」(資料表) 下拉式選單中,選取資料庫中的資料表。
選用:如要指定匯入作業的使用者,請按一下「Show user options」(顯示使用者選項),然後在「User」(使用者) 欄位中輸入使用者名稱。
如要開始匯入作業,請按一下「匯入」。
gcloud
- 建立 Cloud Storage bucket。
- 將 CSV 檔案上傳至 bucket。如需將檔案上傳至 bucket 的相關說明,請參閱「上傳物件」。
使用
gcloud storage buckets add-iam-policy-binding,將storage.objectViewerIAM 角色授予 bucket 的 AlloyDB 服務帳戶:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com如需設定 IAM 權限的相關說明,請參閱「使用 IAM 權限」。
匯入檔案:
gcloud alloydb clusters import CLUSTER_NAME \ --region=REGION \ --gcs-uri=gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --user=USER \ --csv \ --table=TABLE_NAME更改下列內容:
- CLUSTER_NAME:叢集名稱。
- REGION:部署 AlloyDB 叢集的區域。
- BUCKET_NAME:Cloud Storage bucket 名稱。
- FILE_NAME:CSV 檔案的名稱。
- DATABASE_NAME:叢集內資料庫的名稱。
- USER:匯入作業的使用者。
- TABLE_NAME:資料庫中的資料表。
如要進一步瞭解如何使用
import指令,請參閱gcloud alloydb clusters import指令參考頁面。如果不需要保留先前設定的 IAM 權限,請使用
gcloud storage buckets remove-iam-policy-binding移除。
REST v1
- 建立 Cloud Storage bucket。
- 將 CSV 檔案上傳至 bucket。 如需將檔案上傳至 bucket 的相關說明,請參閱「上傳物件」。
使用
gcloud storage buckets add-iam-policy-binding,將storage.objectViewerIAM 角色授予 bucket 的 AlloyDB 叢集服務帳戶。服務帳戶的格式如下:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com如需設定 IAM 權限的相關說明,請參閱「使用 IAM 權限」。
匯入檔案。
請使用下列 HTTP 方法和網址:
POST https://alloydb.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 bucket 名稱。
- PATH_TO_CSV_FILE:CSV 檔案的路徑。
- USER:匯入作業的使用者。
- DATABASE_NAME:AlloyDB 叢集中的資料庫名稱。
- TABLE_NAME:資料庫中的資料表。
- COLUMNS (選用):要匯入的資料欄。
- ESCAPE_CHARACTER (選用):必須出現在需要逸出的資料字元之前的字元。這個引數的值必須是十六進位 ASCII 代碼中的字元。例如,
22代表雙引號。 - QUOTE_CHARACTER (選用):用於括住字串資料類型資料欄值的字元。這個引數的值必須是十六進位 ASCII 代碼中的字元。例如,
22代表雙引號。 - FIELD_DELIMITER (選用):用於分割資料欄值的字元。這個引數的值必須是十六進位 ASCII 代碼中的字元。例如,
2C代表逗號。
JSON 要求主體:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE", "database": "DATABASE_NAME", "user": "USER", "csvImportOptions": { "table": "TABLE_NAME", "columns": ["COLUMN1", "COLUMN2"], "fieldDelimiter": "FIELD_DELIMITER", "quoteCharacter": "QUOTE_CHARACTER", "escapeCharacter": "ESCAPE_CHARACTER" } }請展開以下其中一個選項,以傳送要求:
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": "2024-09-17T06:05:31.244428646Z", "target": "projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }如果不需要保留先前設定的 IAM 權限,請將其移除。
如需完整的請求參數清單,請參閱
clusters.import。
自訂 CSV 格式並匯入檔案
如果 CSV 檔案包含非預設欄位分隔符號、引號或逸出字元,您可以自訂 CSV 格式並匯入檔案。如要匯入非預設格式的 CSV 檔案,您必須在要求中提供相同的格式選項。
請參考下列 gcloud CLI 和 REST API 範例,自訂 CSV 檔案格式。
gcloud
gcloud alloydb clusters import CLUSTER_NAME \
--region=REGION \
--database=DATABASE_NAME \
--gcs-uri='gs://BUCKET_NAME/PATH_TO_CSV_FILE' \
--user=USERNAME \
--table=TABLE_NAME \
--columns=COLUMNS \
--field-delimiter='2C' \
--quote-character='22' \
--escape-character='5C' \
--csvREST v1
對等的 REST API 要求主體大致如下:
{
"gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
"database": "DATABASE_NAME",
"user": "USER",
"csvImportOptions": {
"table": "TABLE_NAME",
"columns": ["COLUMN1", "COLUMN2"],
"escapeCharacter": "5C",
"quoteCharacter": "22",
"fieldDelimiter": "2C"
}
}
如要瞭解如何為這項工作建構基礎 REST API 要求,請參閱 clusters.import 頁面上的 APIs Explorer。
如果收到類似 INVALID_ARGUMENT 的錯誤訊息,請確認資料表是否存在。如果資料表存在,請確認您具備 bucket 的適當權限。如需在 Cloud Storage 中設定存取控管的協助,請參閱「建立及管理存取控管清單」。
查看匯入作業的狀態
如要查看匯入作業的狀態,請按照下列步驟操作:
gcloud
使用 gcloud alloydb operations describe 指令執行下列操作:
gcloud alloydb operations describe OPERATION_ID --region=REGION這些作業的狀態會顯示在 STATUS 欄位中。
您也可以列出特定作業的詳細資料,或取消特定作業。如要進一步瞭解這個指令,請參閱 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
如果成功,回應主體會包含 Operation 的執行個體。