当前位置: 首页 > 知识库问答 >
问题:

跨多个容器批量删除Blob

苏鹏鹍
2023-03-14

我正在寻找一种有效的方法从我的存储帐户中删除blob列表。将有“大量”blob要删除,这些blob分布在“许多”容器中。

Azure存储客户端库是否提供任何机制来删除列表


共有2个答案

汝和裕
2023-03-14

被接受的答案我不再正确了。现在,您可以使用Azure提供的一个新库:Azure Storage Blobs Batch client library for。净额

当然,还有一个Java图书馆。

Azure Blob存储是Microsoft的云对象存储解决方案。Blob存储针对存储大量非结构化数据进行了优化。此库允许您在单个请求中批处理多个Azure Blob存储操作。

文档。microsoft/azure/storage。斑点。批量自述

代码示例:

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Get a reference to a container named "sample-container" and then create it
BlobServiceClient service = new BlobServiceClient(connectionString);
BlobContainerClient container = service.GetBlobContainerClient(containerName);
container.Create();

// Create a blob named "valid"
BlobClient valid = container.GetBlobClient("valid");
valid.Upload(new MemoryStream(Encoding.UTF8.GetBytes("Valid!")));

// Get a reference to a blob named "invalid", but never create it
BlobClient invalid = container.GetBlobClient("invalid");

// Delete both blobs at the same time
BlobBatchClient batch = service.GetBlobBatchClient();
try
{
    batch.DeleteBlobs(new Uri[] { valid.Uri, invalid.Uri });
}
catch (AggregateException)
{
    // An aggregate exception is thrown for all the individual failures
    // Check ex.InnerExceptions for RequestFailedException instances
}
梅修贤
2023-03-14

这个答案现在已经过时了。请参阅下面由Ester Kaufment提供的答案。现在可以批量删除blob。

Azure存储客户端库是否提供了从我的存储帐户中删除列表的机制

遗憾的是,没有。Azure存储客户端库只是为您提供了一个删除Blob功能,该功能将一次删除单个Blob。

还是我一直在迭代每个blob,找出它的容器,然后逐个删除?

您需要单独删除每个blob。但是,如果您有需要删除的blob的URL,那么您不需要找出容器。使用blob的URL和存储凭据,您可以创建CloudBlob对象的实例,然后调用DeleteIfExistDeleteIfExistsAsync方法来删除blob。类似于:

        var cred = new StorageCredentials(accountName, accountKey);
        var blob = new CloudBlob(new Uri("https://myaccount.blob.core.windows.net/mycontainer/myblob.png"), cred);
        blob.DeleteIfExists();
 类似资料:
  • 问题内容: 我在SQL Server 2005中有一张表,其中有大约40亿行。我需要删除大约20亿行。如果我尝试在单个事务中执行此操作,则事务日志将填满,并且将失败。我没有多余的空间来增加事务日志。我认为最好的方法是批处理delete语句(约10,000个批?)。 我可能可以使用游标执行此操作,但是这样做是一种标准/简单/明智的方法吗? PS此表没有标识列作为PK。PK由整数外键和日期组成。 问题

  • 本文向大家介绍mysql批量删除大量数据,包括了mysql批量删除大量数据的使用技巧和注意事项,需要的朋友参考一下 mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM syslogs WHERE statusid=1 会发现删除失败,因为lock wai

  • 所以我重新下载了我的google drive备份,我注意到在每个文件中,不管在我的目录和或子目录中有多深,它的名称中都有一个“(1)”,我想要删除这个。Iv获得但这只适用于这个目录,我需要深入得多。提前道谢。 更新:get到“get-childitem-recurse rename-item-newname{$_.name-replace”(1)“,”“}”但它引发错误:rename-item:源

  • 问题内容: 我正在使用reactFire,Firebase和reactJS构建一个简单的待办事项应用程序。我遇到的问题是当我尝试批量删除列表中已完成的条目时。 该循环过早结束,即在删除所有完成的条目之前,因为调用了render函数。 问题答案: 您可以使用多位置更新一次性删除所有已完成的项目:

  • 问题内容: 首先,我要说我正在SQL Server 2005上运行,所以我没有访问权限。 我有一个约有15万行的表,每天都要从一个文本文件中进行更新。当行从文本文件中掉出时,我需要从数据库中删除它们,如果它们发生更改或是新的,则需要相应地进行更新/插入。 经过一些测试,我发现从性能角度来看,完全删除然后从文本文件中批量插入要比逐行读取文件进行更新/插入要快得多,这是指数级的。但是,我最近遇到了一些

  • 本文向大家介绍ThinkPHP删除栏目(实现批量删除栏目),包括了ThinkPHP删除栏目(实现批量删除栏目)的使用技巧和注意事项,需要的朋友参考一下 前段时间发表了一个删除栏目的随笔,当时实现的功能是删除一条信息,这次来实现一下批量删除栏目。 我们需要达到的是这样一个效果: 选中批量删除按钮后可以选中所有该页面的栏目,这个是前端页面的实现,在这里就不多说了,我们直接进入正题:批量删除的功能。 1