从谷歌云数据存储迁移到谷歌云 sql

Posted

技术标签:

【中文标题】从谷歌云数据存储迁移到谷歌云 sql【英文标题】:Migration from Google cloud datastore to Google cloud sql 【发布时间】:2018-10-11 08:09:34 【问题描述】:

我们将 Google Cloud Datastore 用于我们的 Google App Engine (GAE) 应用程序。在我们的项目改造期间,我们希望将我们的数据库从 Datastore 迁移到 Google Cloud SQL。

我们在 Datastore 中有大约 1 TB 的数据,不包括索引。

如何从 Datastore 迁移到 Cloud SQL,是否有任何现有的开源解决方案可用于此。

我检查了以下一项 https://cloud.google.com/datastore/docs/export-import-entities,不利于datastore和sql之间的数据迁移

谢谢

【问题讨论】:

【参考方案1】:

您可以使用Cloud Datastore to JSON dataflow template 导出到 JSON 文件,然后运行脚本将 JSON 文件读入云 sql。

【讨论】:

【参考方案2】:

有不同的方法来管理这个,我认为最简单的方法是按照 Jim Morrison 所说的,使用 Cloud Datastore to JSON Dataflow 模板。这种方法也有不同的可能性:

首先使用该命令将公共模板下载到本地:

 gsutil cp gs://dataflow-templates/latest/Datastore_to_GCS_Text .

(注意不要删除最后一个.,你可以换到你要下载的目录)

然后,正如 Jim Morrison 在他的回答中向您解释的那样,编辑下载的文件并使用您自己的 [1] 更改模板参数。

完成后,将其再次上传到您拥有的存储桶中。例如:

gsutil cp Datastore_to_GCS_Text gs://datastore_to_cloudsql/template/

然后您可以使用 GCP Console 运行作业(通过使用自定义模板从模板创建作业)[2]

当您拥有 JSON 文件后,将其转换为 CSV 并将其导入云 SQL [3]。另外,也许您想添加一个函数,因为模板参数允许[1] 直接将导出的数据转换为 CSV 格式而不是 JSON 文件。

提供的 JSON 格式是一个文档,其中填充了类似这样的行,我对其进行了格式化以使其更清晰:


  "key":"partitionId":"projectId":"MY_PROJECT_ID",
  "path":["kind":"MY_KIND_NAME","id":"4814888656437248"],
  "properties":
    "MY_FIRST_COLUMN":"integerValue_FOR_EXAMPLE":"3_INT_VALUE_EXAMPLE",
    "SECOND_COLUMN":"stringValue_FOR_EXAMPLE":"foobarfoobarfoobar_FOR_EXAMPLE",
    "THIRD_COLUMN":"stringValue_FOR_EXAMPLE":"foobar_FOR_EXAMPLE"
  

1:https://cloud.google.com/dataflow/docs/templates/provided-templates#cloud-datastore-to-cloud-storage-text

2:https://cloud.google.com/dataflow/docs/templates/executing-templates#using-the-gcp-console

3:https://cloud.google.com/sql/docs/mysql/import-export/importing#importing_csv_files_to_title_short

【讨论】:

以上是关于从谷歌云数据存储迁移到谷歌云 sql的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据附加到谷歌云存储上的文件

如何在谷歌大查询中从谷歌云存储上传表格

使用python从谷歌云存储桶中删除数据时出错

使用 SSIS 将本地文件上传到谷歌云存储桶

将文件从 AWS s3 (SSE) 存储桶复制到谷歌云

无法使用 python 将 JSON 文件从谷歌云存储加载到 bigquery