Массовое удаление сущностей в Google App Engine - PullRequest
1 голос
/ 25 октября 2009

Я пытаюсь удалить некоторые ненужные данные из хранилища данных с помощью 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 ]

1 голос
/ 18 января 2013

Можно удалить все объекты определенного типа в разделе «Администратор хранилища данных»:

Выберите объекты, а затем выберите «Удалить объекты»:

enter image description here

1 голос
/ 06 января 2010

Посмотрите на похожий вопрос: Удалите все данные для вида в Google App Engine для других способов массового удаления информации.

0 голосов
/ 15 декабря 2010
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;
    }
}
...