我尝试将实体备份到存储桶中并将该备份数据文件下载到我的本地,但该文件也包含垃圾数据。
我尝试做的是将数据存储区实体移动到云sql数据库。现在的计划是将数据存储区实体下载到本地并从中生成.sql文件,然后使用它在云sql实例中创建数据库。
答案 0 :(得分:1)
Google App Engine的数据存储区import/export不使用标准格式。您可以使用[1]或[2]中描述的方法阅读它。您也可以从这些文件导入BigQuery,您可以更轻松地导出这些文件。
另一种方法是使用数据存储区API以编程方式从数据存储中检索entites以写入您的SQL实例。您甚至可以在Cloud Dataflow中执行此操作,该工具具有从数据存储区读取和写入SQL的工具(通过Apache Beam中的JDBC)。
然而,实际上你实现了提取,还需要考虑一些额外的“陷阱”:
Datstore实体可以拥有“祖先”。这在SQL中不存在。您可能希望每个实体类型都有一个单独的表。子实体的表应该有一个列,表示不同表中的实体是父。
数据存储区支持数组属性,而SQL则不支持。如果使用数组,则需要找到一些方法在目标模式中表达它。通常,这是通过单独的表和关系来实现的。因此,例如,如果您在Person实体中有一个带有数字列表的“telephone_numbers”属性,您可能需要一个“电话”表,其中有两列 - “person_id”和“telephone_number”。
数据存储区允许同一实体类型的不同实体具有不同的属性,或者同一属性具有不同的类型。在SQL中不允许这样做,您需要确保同一个表中的每条记录都有统一的架构。