[英]Store a list<string> to SQL database table?
我想在Microsoft Azure中查找一个存储帐户,在特定容器中(在存储帐户中)列出blob,然后将列出的blob名称存储到数据库表中。 任何人都建议使用ac#代码将Blob名称列表存储到数据库表中。
namespace ListStorageAccntFiles
{
class Program
{
static void Main(string[] args)
{
Console.Clear();
//Code to list the blobnames in Console
CloudStorageAccount StorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
var BlobClient = StorageAccount.CreateCloudBlobClient();
var Container = BlobClient.GetContainerReference("samples-workitems");
var list = Container.ListBlobs();
List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();
blobNames.ForEach(Console.WriteLine);
//Code to store blobnames under the column header "name" in a database table
}
}
}
与方案!!! 该程序可以查看存储帐户并处理所有新文件和修改过的文件,如果有新文件,则采取措施
我认为,建议使用WebJobs SDK的BlobTrigger达到您的目的。以下是我的代码示例,您可以更好地了解它:
WebJob类别
public class Functions
{
//This function will get triggered/executed when a blob is created or updated on an Azure Blob container called trigger-blob-input.
public static void TriggerAzureBlob([BlobTrigger("trigger-blob-input/{name}")] ICloudBlob blob)
{
Console.WriteLine("Blob name:" + blob.Name);
//do something with the created/updated blob
}
}
如下创建/更新Blob时:
您可以通过BlobTrigger检测blob并获得以下输出:
有关更多详细信息,您可以参考以下教程:
此外,WebJobs SDK扫描日志文件以监视新的或更改的Blob。 此过程不是读取时间,因此在创建/更新Blob之后可能不会在短时间内或更长时间内触发功能。
如果Blob触发器的限制不满足您的应用程序的要求,则可以在创建/更新Blob时创建队列消息,然后在处理Blob的函数上使用QueueTrigger而不是BlobTrigger。
我认为您可以将值存储为逗号分隔的字符串。 在C#中取回值时,您可以split(“,”)以Array形式获取值。 [在Java中,字符串拆分方法返回数组。 不确定c#]
如果您认为您的值中包含逗号,请使用其他字符代替逗号。
继续编写您的代码。 添加此行以将其转换为定界字符串
string namesAsString = blobNames.Aggregate((i, j) => i + "UNIQUE_DELIMITER_CHARACTER_OF_YOUR_CHOICE" + j);
例如,您可以使用':'作为分隔符
现在,您可以轻松地将此字符串存储在表中。 为了在父数据发生更改的情况下更新此数据,可以按索引(原始集合中对象的索引)进行更新
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.