如需从 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
模式会很有帮助。