2011-04-13 119 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的管理提供了一個簡單的用戶界面,刪除表中的所有行。

首先,打開數據存儲管理:轉到應用程序設置並啓用數據存儲管理。

現在,「數據存儲管理」將出現在主菜單(在數據部分下)。選擇它,你的實體將被列出。您可以選擇任何實體並選擇「刪除條目」(或備份實體和「複製到另一個應用程序」)。

注意:這些選項將計入您的使用配額。