2011-03-19 57 views
4

我從數據存儲中刪除了大量的對象,我不想要 (其中約7000個)。 這些對象中的每一個都有一個與之相關的blob,由 字符串(blob鍵)引用。

正如您現在可能已經猜到的那樣,我忘記刪除這些斑點。 現在我沒有任何對他們的引用,但我想刪除它們。 我似乎無法找到一種方法來做到這一點。 任何幫助將不勝感激。

UPDATE 找到解決方案。刪除appengine blobstore中的孤立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

可能重複[是否有可能找到並刪除在App Engine Blob存儲區孤立的BLOB?(http://stackoverflow.com/questions/2935980/is-it-possible-to-find-and -delete -blob-blobstore) – systempuntoout 2011-03-19 13:40:11

+1

@systempuntoout謝謝,雖然我在尋找一個Java解決方案,這個問題你已經鏈接到了,幫助解決了我的問題。 – Gaurav 2011-03-19 19:44:15

+0

很高興幫助。您可以在此處發佈您自己的Java解決方案,作爲將其標記爲已接受的答案;這對其他人會有幫助。 – systempuntoout 2011-03-19 20:43:12

回答

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