首页 > 解决方案 > 将 csv 数据直接写入 azure blob 存储

问题描述

我有一个包含大约 100 万个数据对象的大型数组。我发现了很多将文件上传到 azure blob 存储的示例。我想你可以用内存流来做到这一点,但我还没有找到从对象中做到这一点的样本。我不确定你是否应该逐行写下我有哪些选项。欢迎所有输入,如果有一些样本会很完美。目标是将数据对象写入 Azure Blob 存储中的 csv 文件。

标签: azure-blob-storage

解决方案


我假设您正在使用最新版本的适用于 .NET (9.3.3) 的 Azure 存储 SDK 用 C# 编写代码。

这是我的代码,用于实现将大量数据对象直接写入 Azure Blob 存储的需求。

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();
            }
        }
    }
}

推荐阅读