如需从 Cloud SQL 中注入数据,请按以下步骤操作,设置 Cloud SQL 访问权限、创建数据存储区并注入数据。
为 Cloud SQL 实例设置临时存储桶访问权限
从 Cloud SQL 提取数据时,数据会先暂存到 Cloud Storage 存储桶。请按照以下步骤授予 Cloud SQL 实例对 Cloud Storage 存储分区的访问权限。
- 在 Google Cloud 控制台中,前往 SQL 页面。 
- 点击您计划从中导入数据的 Cloud SQL 实例。 
- 复制实例的服务账号的标识符,该标识符类似于电子邮件地址,例如 - p9876-abcd33f@gcp-sa-cloud-sql.iam.gserviceaccount.com。
- 前往 IAM 和管理页面。 
- 点击授予访问权限。 
- 在新的主账号中,输入实例的服务账号标识符,然后选择 Cloud Storage > Storage Admin 角色。 
- 点击保存。 
下一步:
- 如果您的 Cloud SQL 数据与 Gemini Enterprise 位于同一项目中:请前往从 Cloud SQL 导入数据。 
- 如果您的 Cloud SQL 数据与 Gemini Enterprise 项目位于不同的项目中:请参阅设置从其他项目访问 Cloud SQL 的权限。 
设置从其他项目访问 Cloud SQL
如需向 Gemini Enterprise 授予对其他项目中 Cloud SQL 数据的访问权限,请按以下步骤操作:
- 将以下 - PROJECT_NUMBER变量替换为您的 Gemini Enterprise 项目编号,然后复制代码块的内容。这是您的 Gemini Enterprise 服务账号标识符:- service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
- 前往 IAM 和管理页面。 
- 在 IAM 和管理页面上切换到 Cloud SQL 项目,然后点击授予访问权限。 
- 在新的主账号中,输入服务账号的标识符,然后选择 Cloud SQL > Cloud SQL Viewer 角色。 
- 点击保存。 
接下来,请参阅从 Cloud SQL 导入数据。
从 Cloud SQL 导入数据
控制台
如需使用控制台从 Cloud SQL 注入数据,请按以下步骤操作:
- 在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。 
- 前往数据存储区页面。 
- 点击创建数据存储区。 
- 在选择数据源页面上,选择 Cloud SQL。 
- 指定您计划导入的数据的项目 ID、实例 ID、数据库 ID 和表 ID。 
- 点击浏览,选择要将数据导出到的中间 Cloud Storage 位置,然后点击选择。或者,直接在 - gs://字段中输入位置。
- 选择是否启用无服务器导出功能。无服务器导出功能会产生额外费用。如需了解无服务器导出,请参阅 Cloud SQL 文档中的最大限度地降低导出对性能的影响。 
- 点击继续。 
- 为数据存储区选择一个区域。 
- 为数据存储区输入名称。 
- 点击创建。 
- 如需查看数据注入状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详情。当活动标签页上的“状态”列从正在进行更改为导入已完成时,表示注入已完成。 - 注入过程可能需要几分钟或几小时才能完成,具体取决于数据的大小。 
REST
如需使用命令行创建数据存储区并从 Cloud SQL 注入数据,请按以下步骤操作:
- 创建数据存储区。 - curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DISPLAY_NAME", "industryVertical": "GENERIC", "solutionTypes": ["SOLUTION_TYPE_SEARCH"], }'- 替换以下内容: - PROJECT_ID:您的项目的 ID。
- DATA_STORE_ID:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。
- DISPLAY_NAME:数据存储区的显示名称。此信息可能会显示在 Google Cloud 控制台中。
 
- 从 Cloud SQL 导入数据。 - curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \ -d '{ "cloudSqlSource": { "projectId": "SQL_PROJECT_ID", "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "tableId": "TABLE_ID", "gcsStagingDir": "STAGING_DIRECTORY" }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", }'- 替换以下内容: - PROJECT_ID:Gemini Enterprise 项目的 ID。
- DATA_STORE_ID:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。
- SQL_PROJECT_ID:Cloud SQL 项目的 ID。
- INSTANCE_ID:Cloud SQL 实例的 ID。
- DATABASE_ID:Cloud SQL 数据库的 ID。
- TABLE_ID:Cloud SQL 表的 ID。
- STAGING_DIRECTORY:可选。Cloud Storage 目录,例如- gs://<your-gcs-bucket>/directory/import_errors。
- RECONCILIATION_MODE:可选。值为- FULL和- INCREMENTAL。默认值为- INCREMENTAL。 指定- INCREMENTAL会导致系统以增量方式将数据从 Cloud SQL 刷新到您的数据存储区。此方法会执行 upsert 操作,即添加新文档,并将现有文档替换为具有相同 ID 的更新文档。 指定- FULL会导致数据存储区中的文档完全重新定位。换句话说,系统会将新文档和更新后的文档添加到数据存储区,并从数据存储区中移除 Cloud SQL 中不存在的文档。如果您想自动删除不再需要的文档,- FULL模式会很有帮助。