Google App Engine中的批量实体删除

时间:2009-10-24 23:53:05

标签: java google-app-engine google-cloud-datastore bulk

我正在尝试使用Java从我的数据存储区中删除一些不需要的数据 一些代码使用我修改的DatastoreService来删除尽可能多的代码 在10秒内尽可能输入:

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query query = new Query("PostalCodes");
long starttime = (new Date()).getTime();
for (Entity entity : datastore.prepare(query).asIterable()) {
        datastore.delete(entity.getKey());
        if ((new Date().getTime()) > (starttime + 10000))
                break;
}

当我运行它时似乎有效。我查看了控制台的数据查看器 我试图删除的那种(“PostalCodes”)已经消失,但是那一天 在我这样做之后,整个事情已经恢复了。我错过了吗? 打电话给同花或提交什么?!?

有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

查看类似的问题:Delete all data for a kind in Google App Engine了解批量删除信息的其他方法。

答案 1 :(得分:1)

可以在“DataStore Admin”部分中删除特定类型的所有实体:

选择实体,然后选择“删除实体”:

enter image description here

答案 2 :(得分:0)

public final class PMF {
    private static final PersistenceManagerFactory pmfInstance =
        JDOHelper.getPersistenceManagerFactory("transactions-optional");

    private PMF() {
        PersistenceManagerFactory pmfInstance = PMF.get();
        PersistenceManager pm = pmfInstance.getPersistenceManager();
        pm.deletePersistentAll();/* by using this all the entities which are created earlier will be deleted*/
    }

    public static PersistenceManagerFactory get() {
        return pmfInstance;
    }
}