Pregunta

Estoy tratando de eliminar algunos datos no deseados de mi almacén de datos con Java y encontrado algún código usando el DatastoreService que modifiqué para eliminar tantos entradas como sea posible en 10 segundos:

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;
}

Parece funcionar cuando ejecuto esto. Reviso el visor de datos de la consola. y el tipo que estoy tratando de eliminar (" Código Postal ") se ha ido, pero el día Después de hacer esto, todo ha sido restaurado. Me estoy perdiendo un llamar para enjuagar o comprometerse o algo?!?

¿Hay una mejor manera de hacer esto?

¿Fue útil?

Solución

Eche un vistazo a una pregunta similar: Eliminar todos los datos de un tipo en Google App Engine para otras formas de eliminar información de forma masiva.

Otros consejos

Es posible eliminar todas las entidades de cierto tipo en la sección "Administrador del almacén de datos":

Seleccione las entidades y luego seleccione 'Eliminar entidades':

ingrese la descripción de la imagen aquí

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;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top