【Azure 存储服务】存储在Azure Storage Table中的数据,如何按照条件进行删除呢?

Azure ,存储,数据,条件 · 浏览次数 : 82

小编点评

**Java 代码删除 Table 的 Entity 的步骤:** 1. **获取 Table Client:** ```java TableClient tableClient = TableClient.builder() .endpoint(endpointUrl) .credentials(credentials) .build(); ``` 2. **查找需要删除的 Entity:** ```java // 您可以根据 partition key 和 row key 来查找需要删除的 Entity TableEntity entity = tableClient.readEntity(partitionKey, rowKey); ``` 3. **根据条件删除 Entity:** ```java if (// 您的条件满足,例如:实体的 partition key 等于 "partitionKey",实体的 row key 等于 "rowKey" ) { entity.delete(); } ``` 4. **提交事务:** ```java tableClient.transaction().execute(entity); ``` **示例代码:** ```java // 假设您已获取到了 Table Client TableClient tableClient = TableClient.builder() .endpoint("your_storage_account_url") .credentials(credentials) .build(); // 假设您要删除的 Entity 的 partitonKey 和 rowKey String partitionKey = "partitionKey"; String rowKey = "rowKey"; // 查找 Entity TableEntity entity = tableClient.readEntity(partitionKey, rowKey); // 根据条件删除 Entity if (entity.getPartitionKey().equals(partitionKey) && entity.getRowKey().equals(rowKey)) { entity.delete(); } // 提交事务 tableClient.transaction().execute(entity); ``` **注意:** * 删除表可能需要至少 40 秒才能完成。 * 在删除表时,请确保您的应用程序具有访问目标表所需的权限。 * 使用 `deleteEntity()` 方法时,您可以根据需要指定 additionalOptions 参数,例如 `ignoreNull` 和 `returnStatement`。

正文

问题描述

如何按条件删除 Storage Table 中的数据,如果Table中有大量的条记录需要删除,Java代码如何按条件删除 Table中的数据(Entity)?

(通过Azure Storage Explorer工具是可以删除,但是由于数据量太大,人工操作耗时太久,所以需要使用Java代码完成)

 

问题解答

删除Table

删除表的操作可以通过 Storage Explorer工具或者REST API接口(https://learn.microsoft.com/zh-cn/rest/api/storageservices/delete-table)完成。成功删除表时,会立即将其标记为要删除,并且客户端不再可访问。 稍后,在垃圾回收期间,该表将从表存储中删除。

请注意,删除表可能需要至少 40 秒才能完成。 如果在删除表时尝试对表执行操作,服务将返回状态代码 409 (Conflict) 。 该服务返回其他错误信息,指示正在删除表。

 

删除Table中的Entity

当需要根据某些条件删除表中数据的时候,可以参考Table的实例代码:https://docs.azure.cn/zh-cn/cosmos-db/table/how-to-use-java, 调用 TableClient.deleteEntity  即可根据 partition key 和 row key 来删除数据。 也可以先查找需要删除的Entity后,调用 deleteEntity 方法删除

  • deleteEntity(TableEntity entity) : Deletes an TableEntity from the table.
  • deleteEntity(String partitionKey, String rowKey) : Deletes an TableEntity from the table.

(可以在红色箭头处 forEach 中调用 tableClient.deleteEntity(tableEntity) 来删除它)

 

其他方式

当然也可以使用RESTAPI的方式执行实体组事务 (REST API) - https://learn.microsoft.com/zh-cn/rest/api/storageservices/performing-entity-group-transactions#requirements-for-entity-group-transactions

需要注意的是批量操作需要满足以下要求:

• 要作为事务部分操作的所有实体都必须具有相同的 PartitionKey 值。
• 一个实体在事务中只能出现一次,对其只能执行一项操作。
• 事务可以包含最多 100 个实体,其总有效负载大小不能超过 4 MiB。

 

 

 

 

 

【END】

 

与【Azure 存储服务】存储在Azure Storage Table中的数据,如何按照条件进行删除呢?相似的内容:

【Azure 存储服务】存储在Azure Storage Table中的数据,如何按照条件进行删除呢?

问题描述 如何按条件删除 Storage Table 中的数据,如果Table中有大量的条记录需要删除,Java代码如何按条件删除 Table中的数据(Entity)? (通过Azure Storage Explorer工具是可以删除,但是由于数据量太大,人工操作耗时太久,所以需要使用Java代码完

【Azure 存储服务】Azure Data Lake Storage (ADLS) Gen2 GRS Failover是否支持自动切换或者手动切换到灾备的终结点呢?

问题描述 在Azure的存储服务中,介绍灾备恢复和Storage Account故障转移的文档中,有一句话“Account failover is not supported for storage accounts with a hierarchical namespace enabled.” 而

【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (一)

问题描述 在使用Azure的存储服务时候,如果上传的文件大于了100MB, 1GB的情况下,如何上传呢? 问题解答 使用Azure存储服务时,如果要上传文件到Azure Blob,有很多种工具可以实现。如:Azure 门户, Azure Storage Explorer, 命令行工具 az copy

【Azure 存储服务】关于中国区Azure Storage Account 存储账号服务误删除后的恢复问题

问题描述 在Azure上,如果需要恢复之前删除的存储账户(Storage Account), 有什么办法呢? 问题解答 Azure 现在推出了自主恢复已删除的存储账号的功能,具体步骤如下: 第一步: 进入Azure门户,导航到Storage Account服务(https://portal.azur

【Azure 存储服务】使用 AppendBlobClient 对象实现对Blob进行追加内容操作

问题描述 在Azure Blob的官方示例中,都是对文件进行上传到Blob操作,没有实现对已创建的Blob进行追加的操作。如果想要实现对一个文件的多次追加操作,每一次写入的时候,只传入新的内容? 问题解答 Azure Storage Blob 有三种类型: Block Blob, Append Bl

【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (二)

问题描述 在上一篇博文(【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (一):https://www.cnblogs.com/lulight/p/17061631.html)中,介绍了第一种分片的方式上传文件。 本文章接着介绍第二种方式,使用 M

【Azure 存储服务】Azure Blob Storage SDK 升级失败,遇见 Unsatisfied Dependency Exception 和 Unexpected Length Exception

问题描述 在升级Java Azure Blob Storage SDK的过程中,先后遇见了 UnsatisfiedDependencyException 和 UnexpectedLengthException. 错误一:Org.springframework.beans.factory Unsati

【Azure 存储服务】Azure Storage Account Queue中因数据格式无法处理而在一个小时内不在可见的问题

问题描述 在从Storage Account 队列中获取数据(Queue),在门户中,明显看见有数据,但是通过消费端代码去获取的时候,就是无法获取到有效数据的情况。获取消息的代码如下: 问题解答 经过对 receiveMessages 方法定义的查询,第二个参数,第三个参数的两个时间表示的意思为 消

【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度

问题描述 把MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度,这是什么情况呢? 问题解答 因为MP4上传到Azure Blob后,根据公开的权限,可以直接通过Storage Blob URL +/ Blob Container + / Bl

【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account

问题描述 在Azure的同一数据中心,API Management访问启用了防火墙的Storage Account,并且把APIM的公网IP地址设置在白名单。但访问依旧是403 原因是: 存储帐户部署在同一区域中的服务使用专用的 Azure IP 地址进行通信。 因此,不能基于特定的 Azure 服