gpt4 book ai didi

c# - 使用 Azure.Data.Tables SDK 在 Azure 表存储中插入批处理似乎不可行

转载 作者:行者123 更新时间:2023-12-02 23:52:49 30 4
gpt4 key购买 nike

由于 Microsoft.Azure.Cosmos.Table SDK 已被弃用,我正在将所有 Azure 表存储功能升级到 Azure.Data.Tables 库。

我使用 Cosmos 包中的代码轻松加载了批量数据。

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(); // partition key is the symbol
var batches = records.Batch(100); //batching max value is 100
completionMessage.Append($" A storage batch started for {records.Count} {pk} records into the table: {tableName} ");

#region BATCH JOB

//Iterating through each batch
foreach (var block in batches) {
var batchOperationObj = new TableBatchOperation();
foreach (var record in block) {
batchOperationObj.InsertOrReplace(record);
}
try {
var worked = await table?.ExecuteBatchAsync(batchOperationObj)! != null;
if (worked) {
batchResponse.NumberOfRecordsProcessed += batchOperationObj.Count;
batchOperationObj.Clear();
}
} // rest removed for brevity

我找不到任何方法、示例或教程来展示如何使用此 SDK 插入批处理。有没有可能无法使用它?对于单一实体只有 Add 方法。

任何想法都值得赞赏,因为我一次加载数千条记录,并且无法想象通过迭代进行是唯一的方法。

最佳答案

这当然是可能的。您只需要使用 TableTransactionAction将实体添加到批处理中,然后调用 TableClient.SubmitTransactionAsync保存批处理中的实体。

这是伪代码:

TableClient client = new TableClient(new Uri(""));
var transactionActions = new List<TableTransactionAction>()
{
new TableTransactionAction(TableTransactionActionType.Add, new TableEntity("pk", "rk1")),
new TableTransactionAction(TableTransactionActionType.Add, new TableEntity("pk", "rk2")),
new TableTransactionAction(TableTransactionActionType.Add, new TableEntity("pk", "rk3")),
new TableTransactionAction(TableTransactionActionType.Add, new TableEntity("pk", "rk4")),
new TableTransactionAction(TableTransactionActionType.Add, new TableEntity("pk", "rk5")),
};
await client.SubmitTransactionAsync(transactionActions);

关于c# - 使用 Azure.Data.Tables SDK 在 Azure 表存储中插入批处理似乎不可行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77082662/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com