2011-04-13 77 views

回答

3

有没有这样的事情,在GAE下降表。如果你想删除一种类型的所有实体。选择所有类型的记录。使用for循环并使用delete()将其删除。仍然可以使用管理控制台删除记录。但是,您无法在管理控制台中一次删除所有实体。 Appengine sdk拥有自己的管理控制台,可用于localhost,可在https://localhost:8080/_ah/admin访问。

+0

这个delete()方法在哪里?我使用JPA并尝试EntityManager.remove(),不幸的是它不起作用。 – pcjuzer 2011-04-13 15:20:26

+0

@pcjuzer在你使用的java使用pm.deletePersistent(e); – 2011-04-13 17:56:28

+0

@Abdul是的,这是JDO而不是JPA。 – pcjuzer 2011-04-14 04:34:18

7

数据存储区是无模式的,并且没有表。相反,每个实体都有一个名称,它只是一个字符串,可以将该实体与其他类型区分开来。如果要删除某种记录,可以使用数据存储管理工具来执行此操作,如文档here所述。请注意,这样做会使用您的应用的配额,就像您自己删除它们一样 - 但它可能比您自己设计的解决方案更高效,更快。

+0

内建看起来不错,但我怎样才能使用它与Java而不是Python? – pcjuzer 2011-04-13 15:16:47

0
  • 好吧,没有表只是种类,但问题是类似的:我想删除许多实体,而是我想删除该种类本身的元数据。
  • 有一个批量删除的解决方案,由尼克约翰逊提到,但我没有找到如何使用它与Java和appengine-web.xml
  • Abdul建议选择一种类型的所有实体,并从代码中逐个删除它们。它的工作原理并不理想,因为我必须使用多个Datastore调用。我试过了,它在数据存储使用方面很昂贵。但这个想法是明智的:我必须在我的应用程序中打开一个管理后门来执行此操作。无法打开某些数据库工具,连接到GAE数据存储并编写SQL命令。
  • 我的最终解决方案是在JPA中使用删除查询。例如:DELETE FROM MyKind t WHERE t.someProperty=someValue。我只是为了一个例子而写了'where'子句。这个查询应该调用executeUpdate(),它返回已删除实体的数量。
  • 任何答案都没有提及,如果我删除了一个Kind的所有实体,那么Kind本身(元数据)从Datastore中消失。
  • 以后可以用相同的名称和完全不同的字段创建另一个类。
  • 请注意,当你删除一个类的所有实体,你不能在管理控制台创建新的实例,或者至少我找不到可能性。
-1

这里是回答

转到https://appengine.google.com/然后登录到您的古尔应用引擎帐户。

现在转到yourappengineproject - > Datastore Viewer - > Query。

现在点击选项,你会得到查询编辑器。键入查询TRUNCATE TABLE table_name并单击运行查询。

这样你就可以在应用引擎上删除你的表了。

+0

这不是有效的GQL查询。 DataStore中不存在“截断”的概念。 – miguelv 2014-10-08 11:37:00

0

App Engine的管理提供了一个简单的用户界面,删除表中的所有行。

首先,打开数据存储管理:转到应用程序设置并启用数据存储管理。

现在,“数据存储管理”将出现在主菜单(在数据部分下)。选择它,你的实体将被列出。您可以选择任何实体并选择“删除条目”(或备份实体和“复制到另一个应用程序”)。

注意:这些选项将计入您的使用配额。