You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure.Data.Tables SDK是否支持Azure表存储批量插入操作?

Azure.Data.Tables 批量插入/更新实现方案

Azure.Data.Tables完全支持批量操作,只是API设计和旧的Microsoft.Azure.Cosmos.Table不同,你可以通过TableTransactionAction和TableClient.SubmitTransactionAsync实现批量InsertOrReplace,核心逻辑和你之前的代码一致,仅API调用方式有变化。

核心实现要点

  • 依旧按分区键分组(批量操作要求所有操作属于同一个分区键,和旧SDK规则一致)
  • 每个批次最多包含100条操作
  • 用TableTransactionAction封装每条实体的操作类型(InsertOrReplace对应UpsertReplace)
  • 通过TableClient.SubmitTransactionAsync提交整个批次

对应代码示例

try
{
    var pks = entities.Select(x => x.PartitionKey).Distinct().ToList();
    foreach (var pk in pks)
    {
        await AddSymbolIfNotExistOrUpdateLastRecordDateAsync(pk, entities[0].RowKey);
        var records = entities.Where(x => x.PartitionKey == pk).Distinct().ToList();
        var batches = records.Batch(100); // 保持100条每批的限制
        completionMessage.Append($" A storage batch started for {records.Count} {pk} records into the table: {tableName} ");

        // 遍历每个批次
        foreach (var block in batches)
        {
            var transactionActions = new List<TableTransactionAction>();
            foreach (var record in block)
            {
                // 封装UpsertReplace操作(对应旧SDK的InsertOrReplace)
                transactionActions.Add(new TableTransactionAction(TableTransactionActionType.UpsertReplace, record));
            }

            try
            {
                // 提交事务
                var response = await tableClient.SubmitTransactionAsync(transactionActions);
                if (response != null)
                {
                    batchResponse.NumberOfRecordsProcessed += transactionActions.Count;
                    transactionActions.Clear();
                }
            }
            catch (RequestFailedException ex)
            {
                // 错误处理:若批次中任意操作失败,整个事务会回滚,可在此拆解为单个操作重试
            }
        }
    }
}
catch (Exception ex)
{
    // 全局异常处理
}

额外注意事项

  • 若需处理大量跨分区记录,可使用Parallel.ForEach并行处理不同分区的批次,但需控制并发数避免触发存储服务限流
  • 事务提交失败时,建议将失败批次拆解为单个操作逐一重试,确保数据最终写入

内容的提问来源于stack exchange,提问作者dinotom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:43:30