删除appengine blobstore中的孤立blob

时间:2011-03-19 12:19:28

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

我删除了数据存储区中的大量对象 要求(约7000个)。 每个对象都有一个与之关联的blob,由a引用 字符串(blob键)。

你可能已经猜到了,我忘了删除那些blob。 现在我没有任何参考,但我想删除它们。 我似乎找不到办法做到这一点。 任何帮助将不胜感激。

更新 找到了解决方案。

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
List<BlobInfo> blobsToCheck = new LinkedList<BlobInfo>(); 
Iterator<BlobInfo> iterator = null;
if(afterBlobKey == null){
    iterator = new BlobInfoFactory().queryBlobInfos();
}else{
    iterator = new BlobInfoFactory().queryBlobInfosAfter(new BlobKey(afterBlobKey));
}

while(iterator.hasNext()){

    blobsToCheck.add(iterator.next());

}

//Check those blobs if they have reference in datastore
//Delete using blobstoreService.delete(blobKey);

1 个答案:

答案 0 :(得分:11)

UPDATE 找到解决方案,BlobInfoFactory()。queryBlobInfos()就是我要找的。

    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    List<BlobInfo> blobsToCheck = new LinkedList<BlobInfo>(); 
    Iterator<BlobInfo> iterator = null;
    if(afterBlobKey == null){
        iterator = new BlobInfoFactory().queryBlobInfos();
    }else{
        iterator = new BlobInfoFactory().queryBlobInfosAfter(new BlobKey(afterBlobKey));
    }

    while(iterator.hasNext()){

        blobsToCheck.add(iterator.next());

    }

    //Check those blobs if they have reference in datastore
    //Delete using blobstoreService.delete(blobKey);