本页面介绍了如何将数据从存储在 Cloud Storage 存储桶中的 SQL 文件导入到 AlloyDB for PostgreSQL 集群中。SQL 文件是包含一系列 SQL 命令的纯文本文件。
您可以取消将数据导入 AlloyDB 集群。如需了解详情,请参阅取消导入操作。
准备工作
在开始导入操作之前,请满足以下条件:
- 确保您的数据库具有足够的可用空间。
- 导入操作会使用数据库资源,但不会干扰正常的数据库操作,除非集群预配不足。
导入到 AlloyDB 所需的角色和权限
如需将数据从 Cloud Storage 导入到 AlloyDB 中,启动导入的用户必须拥有以下角色之一:
- AlloyDB Admin 角色
- 包括以下权限的自定义角色:
- alloydb.clusters.get
- alloydb.clusters.import
 
此外,AlloyDB 集群的服务账号必须拥有以下角色之一:
- storage.objectViewerIAM 角色
- 包括以下权限的自定义角色:
- storage.objects.get
 
如需有关 IAM 角色的帮助,请参阅 Identity and Access Management。
将 SQL 文件导入 AlloyDB 集群
如需使用 SQL 文件将数据导入 AlloyDB 集群,请按以下步骤操作:
控制台
- 前往集群页面。 
- 点击某个集群名称,打开该集群的概览页面。 
- 点击导入。 
- 在选择源文件部分,浏览 Cloud Storage 并从存储桶中选择一个 SQL 文件或从本地机器上传一个 SQL 文件进行导入。 
- 选择要导入数据的数据库。 - 这样,AlloyDB 会在导入数据之前运行 - USE DATABASE语句。如果您的 SQL 转储文件包含- USE DATABASE语句,它将替换您在 Google Cloud 控制台中设置的数据库。
- 可选:为导入操作指定用户。如果导入文件包含必须由特定用户执行的语句,请使用此字段指定该用户。 
- 如需开始导入操作,请点击导入。 
gcloud
- 创建 Cloud Storage 存储桶。
- 将 SQL 文件上传到您的存储桶。如需有关将文件上传到存储桶方面的帮助,请参阅上传对象。 
- 使用 gcloud storage buckets add-iam-policy-binding 向 AlloyDB 集群服务账号授予 - storage.objectViewerIAM 角色以用于存储桶:- 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 向 AlloyDB 集群服务账号授予 - storage.objectViewerIAM 角色以用于存储桶。如需有关设置 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 实例。