代码之家  ›  专栏  ›  技术社区  ›  Thomas Segato

将csv数据直接写入azure blob存储

  •  0
  • Thomas Segato  · 技术社区  · 7 年前

    1 回复  |  直到 7 年前
        1
  •  4
  •   Peter Pan    7 年前

    我假设您使用最新版本的azurestoragesdkfor.NET(9.3.3)用C编写代码。

    using System;
    using System.Collections;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Blob;
    
    namespace WriteCSVDataToBlob
    {
    
        class Record
        {
            string[] cols;
    
            public Record(string[] cols)
            {
                this.cols= cols;
            }
    
            override public string ToString()
            {
                return String.Join(',', cols);
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                var arr = new ArrayList();
                arr.Add(new Record(new string[]{ "A", "B","one" }));
                arr.Add(new Record(new string[] { "C", "D","two"}));
                string storageConnectionString = "<your storage connection string>";
                var storageAccount = CloudStorageAccount.Parse(storageConnectionString);
                var client = storageAccount.CreateCloudBlobClient();
                var container = client.GetContainerReference("test");
                var blob = container.GetBlockBlobReference("data.txt");
                using (CloudBlobStream x = blob.OpenWriteAsync().Result)
                {
                    foreach(var rec in arr)
                    {
                        x.Write(System.Text.Encoding.Default.GetBytes(rec.ToString()+"\n"));
                    }
                    x.Flush();
                    x.Close();
                }
            }
        }
    }
    
        2
  •  0
  •   Jack n J    5 年前

    @彼得潘的解决方案适用于Microsoft.Azure.Storage第1.1.1版。

                    using (var writer = new StreamWriter(new MemoryStream()))
                    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
                    {
                        csv.Configuration.Delimiter = userInputModel.Separator;
                        csv.WriteRecords(arr);
                        writer.Flush();
    
                        writer.BaseStream.Seek(0, SeekOrigin.Begin);
    
                        client.AppendBlock(writer.BaseStream);
                    }