我们正在将Google Cloud Datastore用于我们的Google App Engine(GAE)应用程序。在我们的项目改造期间,我们希望将数据库从Datastore迁移到Google Cloud SQL。
我们在数据存储区中有大约1 TB的数据,不包括索引。
如何从数据存储迁移到Cloud SQL,是否有任何可用的开源解决方案。
我检查过以下内容 https://cloud.google.com/datastore/docs/export-import-entities,这对于在数据存储区和SQL之间迁移数据没有帮助
由于
答案 0 :(得分:1)
您可以使用Cloud Datastore to JSON dataflow template导出到JSON文件,然后运行脚本将JSON文件读入云sql。
答案 1 :(得分:1)
管理这个有不同的路径,我认为最简单的方法是做Jim Morrison所说的,使用Cloud Datastore到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控制台运行该作业(通过使用自定义模板从模板创建作业)[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"}
}
}
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