如需从 Spanner 注入数据,请按照以下步骤使用 Google Cloud 控制台或 API 创建数据存储区并注入数据。
设置从其他项目访问 Spanner
如果您的 Spanner 数据与 Gemini Enterprise 位于同一项目中,请跳至从 Spanner 导入数据。
如需向 Gemini Enterprise 授予对其他项目中的 Spanner 数据的访问权限,请按以下步骤操作:
- 将以下 - PROJECT_NUMBER变量替换为您的 Gemini Enterprise 项目编号,然后复制此代码块的内容。这是您的 Gemini Enterprise 服务账号标识符:- service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
- 前往 IAM 和管理页面。 
- 在 IAM 和管理页面上,切换到您的 Spanner 项目,然后点击授予访问权限。 
- 在新的主账号中,输入服务账号的标识符,然后选择以下选项之一: - 如果您在导入期间不使用 Data Boost,请选择 Cloud Spanner > Cloud Spanner Database Reader 角色。
- 如果您计划在导入期间使用 Data Boost,请选择 Cloud Spanner > Cloud Spanner Database Admin 角色,或具有 Cloud Spanner Database Reader 和 spanner.databases.useDataBoost 权限的自定义角色。如需了解 Data Boost,请参阅 Spanner 文档中的 Data Boost 概览。
 
- 点击保存。 
接下来,请参阅从 Spanner 导入数据。
从 Spanner 导入数据
控制台
如需使用控制台从 Spanner 注入数据,请按以下步骤操作:
- 在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。 
- 前往数据存储区页面。 
- 点击创建数据存储区。 
- 在选择数据源页面上,选择 Cloud Spanner。 
- 指定您计划导入的数据的项目 ID、实例 ID、数据库 ID 和表 ID。 
- 选择是否启用 Data Boost。如需了解 Data Boost,请参阅 Spanner 文档中的 Data Boost 概览。 
- 点击继续。 
- 为数据存储区选择一个区域。 
- 为数据存储区输入名称。 
- 点击创建。 
- 如需查看数据注入状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详情。当活动标签页上的“状态”列从正在进行更改为导入已完成时,表示注入已完成。 - 注入过程可能需要几分钟或几小时才能完成,具体取决于数据的大小。 
REST
如需使用命令行创建数据存储区并从 Spanner 中注入数据,请按以下步骤操作:
- 创建数据存储区。 - 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"], "contentConfig": "CONTENT_REQUIRED", }'- 替换以下内容: - PROJECT_ID:Gemini Enterprise 项目的 ID。
- DATA_STORE_ID:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。
- DISPLAY_NAME:数据存储区的显示名称。此信息可能会显示在 Google Cloud 控制台中。
 
- 从 Spanner 导入数据。 - 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 '{ "cloudSpannerSource": { "projectId": "SPANNER_PROJECT_ID", "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "tableId": "TABLE_ID", "enableDataBoost": "DATA_BOOST_BOOLEAN" }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", }'- 替换以下内容: - PROJECT_ID:Gemini Enterprise 项目的 ID。
- DATA_STORE_ID:数据存储区的 ID。
- SPANNER_PROJECT_ID:您的 Spanner 项目的 ID。
- INSTANCE_ID:您的 Spanner 实例的 ID。
- DATABASE_ID:您的 Spanner 数据库的 ID。
- TABLE_ID:Spanner 表的 ID。
- DATA_BOOST_BOOLEAN:可选。是否开启 Data Boost。 如需了解 Data Boost,请参阅 Spanner 文档中的 Data Boost 概览。
- RECONCILIATION_MODE:可选。值为- FULL和- INCREMENTAL。默认值为- INCREMENTAL。 指定- INCREMENTAL会导致从 Spanner 到数据存储区的数据增量刷新。此方法会执行 upsert 操作,即添加新文档,并将现有文档替换为具有相同 ID 的更新文档。指定- FULL会导致数据存储区中的文档完全重新设置基准。换句话说,新文档和更新后的文档会添加到数据存储区,而 Spanner 中没有的文档会从数据存储区中移除。如果您想自动删除不再需要的文档,- FULL模式会很有帮助。
- AUTO_GENERATE_IDS:可选。指定是否自动生成文档 ID。如果设置为- true,则文档 ID 将根据载荷的哈希值生成。请注意,生成的文档 ID 在多次导入时可能不会保持一致。如果您在多次导入时自动生成 ID,Google 强烈建议您将- reconciliationMode设置为- FULL,以保持文档 ID 的一致性。
- ID_FIELD:可选。指定哪些字段是文档 ID。