Записывать данные CSV напрямую в хранилище BLOB-объектов Azure - PullRequest
0 голосов
/ 05 февраля 2019

У меня большой массив с около 1 миллиона объектов данных.Я нашел много примеров для загрузки файлов в хранилище BLOB-объектов Azure.Я думаю, вы могли бы сделать это с потоком памяти, но я не нашел примеров для этого из объектов.Я не уверен с таким размером данных, нужно ли вам писать построчно, какие варианты у меня есть.Все входные данные приветствуются, было бы идеально с некоторыми образцами.Цель состоит в том, чтобы записать объекты данных в файл CSV в хранилище BLOB-объектов Azure.

1 Ответ

0 голосов
/ 15 февраля 2019

Я предполагаю, что вы пишете код на C # с последней версией Azure Storage SDK для .NET (9.3.3).

Вот мой код для реализации ваших потребностей в написании большого массива данныхобъекты непосредственно в хранилище BLOB-объектов Azure.

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