如何将数据插入到 Azure 表存储中

Posted

技术标签:

【中文标题】如何将数据插入到 Azure 表存储中【英文标题】:How to insert data into azure table storage 【发布时间】:2021-12-30 00:25:56 【问题描述】:

我正在寻找一个简单的 C# 程序来将数据插入 Azure blob 表存储。 有人可以帮忙吗?

请让我知道下面的代码有什么问题?(代码没有抛出任何错误,只是没有创建任何表/插入数据)

  
 using System;
using System.Threading.Tasks;
using Azure.Data.Tables;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
using TableEntity = Microsoft.WindowsAzure.Storage.Table.TableEntity;
using TableClientConfiguration = Microsoft.Azure.Cosmos.Table.TableClientConfiguration;
public class CustomerEntity : TableEntity

    public CustomerEntity(string lastName, string firstName)
    
        this.PartitionKey = lastName;
        this.RowKey = firstName;
    
    public CustomerEntity()   // the parameter-less constructor must be provided
    public string Email  get; set; 
    public string PhoneNumber  get; set; 

class Program

    static void Main(string[] args) 
        
        var tableName = "TestTempTable";        
        var storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=**********;AccountKey=*******/****==;EndpointSuffix=core.windows.net";        
        try
        
            Console.WriteLine("START");            
            var storageAccount = CloudStorageAccount.Parse(storageConnectionString);            
            var tableClient = storageAccount.CreateCloudTableClient();
            var table = tableClient.GetTableReference(tableName);
            table.CreateIfNotExistsAsync();            
            Console.WriteLine($"CloudTable name is : tableClient");
            // Create a new customer entity.
            CustomerEntity customer1 = new CustomerEntity("Harp", "Walter");
            customer1.Email = "xyz@xyz.com";
            customer1.PhoneNumber = "1234568";            
            table.ExecuteAsync(TableOperation.Insert(customer1));            
            Console.WriteLine("Records Inserted");
            Console.WriteLine("END");
        
        catch (Exception e)
        
            Console.WriteLine("Encountered Exception - "+e);
        
    
   

谢谢, 保罗。

【问题讨论】:

请编辑您的问题并包含您目前编写的代码和您正在使用的 SDK。 【参考方案1】:

您的程序没有抛出任何错误并且没有插入实体的原因是您没有等待异步操作并且您的程序在它成功之前终止。这就是为什么“插入的记录”之类的行像正常程序执行一样运行的原因。考虑在您的程序中的这两行中使用await

await table.CreateIfNotExistsAsync();

await table.ExecuteAsync(TableOperation.Insert(customer1)); 

【讨论】:

其实我做了更多的研究并在我的try块中添加了以下内容; var storageAccount = CloudStorageAccount.Parse(storageConnectionString); var tableClient = storageAccount.CreateCloudTableClient(); CloudTable 表 = tableClient.GetTableReference(tableName); //tableClient.CreateIfNotExistsAsync(); _ = 等待表.CreateIfNotExistsAsync(); _ = 等待 table.ExecuteAsync(TableOperation.Insert(customer1)); -------------------- 并且成功了。

以上是关于如何将数据插入到 Azure 表存储中的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从数据库中的所有表传输到azure数据湖目的地?

如何将 Azure 存储帐户内容(表、队列、blob)复制到其他存储帐户

如何从 azure blob 存储中获取 json 数据并使用 azure 数据工厂将其发送到 power apps dataverse

使用 azure 数据工厂管道将 json 对象存储到 azure 表存储实体

如何向本地存储帐户中的表编写 LINQ 查询?

如何从存储过程返回的游标将数据插入临时表