本页介绍了如何将数据从存储在 Cloud Storage 存储分区中的 SQL 文件导入 AlloyDB for PostgreSQL 集群。SQL 文件是包含一系列 SQL 命令的纯文本文件。
您可以取消将数据导入 AlloyDB 集群。如需了解详情,请参阅取消导入操作。
准备工作
在开始导入操作之前,请先做好以下准备工作:
- 确保您的数据库具有足够的可用空间。
- 导入操作会使用数据库资源,但不会干扰正常的数据库操作,除非集群预配不足。
导入到 AlloyDB 所需的角色和权限
如需将数据从 Cloud Storage 导入到 AlloyDB,启动导入的用户必须拥有以下角色之一:
- AlloyDB Admin 角色
- 包括以下权限的自定义角色:
alloydb.clusters.get
alloydb.clusters.import
此外,AlloyDB 集群的服务账号必须拥有以下角色之一:
storage.objectViewer
IAM 角色- 自定义角色,包括以下权限:
storage.objects.get
如需有关 IAM 角色的帮助,请参阅 Identity and Access Management。
将 SQL 文件导入 AlloyDB 集群
如需使用 SQL 文件将数据导入 AlloyDB 集群,请按以下步骤操作:
前往集群页面。
点击集群名称,打开该集群的概览页面。
点击导入。
在选择您要从中导入数据的文件中,输入要用于导入的存储分区和 SQL 文件的路径,或浏览到现有文件。
选择要导入数据的数据库。
这样,AlloyDB 会在导入数据之前运行
USE DATABASE
语句。如果您的 SQL 转储文件包含USE DATABASE
语句,它将替换您在 Google Cloud 控制台中设置的数据库。可选:为导入操作指定用户。如果导入文件包含必须由特定用户执行的语句,请使用此字段指定该用户。
如需开始导入操作,请点击导入。
- 创建 Cloud Storage 存储桶。
将 SQL 文件上传到您的存储分区。 如需有关将文件上传到存储分区方面的帮助,请参阅上传对象。
使用 gcloud storage buckets add-iam-policy-binding 向存储分区的 AlloyDB 集群服务账号授予
storage.objectViewer
IAM 角色: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
移除这些权限。
- 创建 Cloud Storage 存储桶。
- 将 SQL 文件上传到您的存储分区。 如需有关将文件上传到存储分区方面的帮助,请参阅上传对象。
为服务账号授予对 Cloud Storage 存储分区的权限,以便执行导入操作。使用服务账号格式指定要导入到的项目的服务账号。服务账号的格式如下:
service-
PROJECT_NUMBER @gcp-sa-alloydb.iam.gserviceaccount.com使用 gcloud storage buckets add-iam-policy-binding 向存储分区的 AlloyDB 集群服务账号授予
storage.objectViewer
IAM 角色。如需有关设置 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 }
如需使用其他用户身份执行导入操作,请指定 user 属性。
如果您不需要保留之前设置的 IAM 权限,请立即移除这些权限。
如需查看该请求的完整参数列表,请参阅
clusters:import
。
查看导入操作的状态
如需检查导入操作的状态,请按以下步骤操作:
使用 gcloud alloydb operations describe
命令运行以下命令:
gcloud alloydb operations describe OPERATION_ID --region=REGION
您还可以列出特定操作的详细信息,或者取消特定操作。如需详细了解此命令,请参阅 gcloud alloydb operations
命令参考页面。
使用 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 实例。