如需从 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 和管理页面。
在 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。