Я работаю над функцией Azure, которая должна читать два файла .csv, хранящиеся в виде BLOB-объектов в хранилище BLOB-объектов Azure, и возвращать третий, новый объект BLOB со строками, которые различаются между обоими входными объектами.
Например,:
csv1:
12,aaa,bbb,ccc,ddd,eee,fff
13,aaa,bbb,ccc,ddd,eee,fff
csv2:
12,bbb,aaa,ccc,ddd,eee,fff
13,aaa,bbb,ccc,ddd,eee,fff
14,aaa,bbb,ccc,ddd,eee,fff
Output csv:
12,bbb,aaa,ccc,ddd,eee,fff
14,aaa,bbb,ccc,ddd,eee,fff
До сих пор мне удавалось читать файлы BLOB-объектов, но я не смог их напрямую сравнить.Мне удалось заставить его работать, читая в BLOB-объектах, загружая их в два разных Datatables и сравнивая их.Тем не менее, этот метод слишком медленный, и я уверен, что есть гораздо более эффективный способ его обработки.
(Будучи более уверенным в работе с Powershell, функция Compare-Object - это как раз то, что я хотел былюблю создавать).
Я могу загрузить в BLOB-объекты, используя методы .DownloadText () или .DownloadToStream (), поэтому получение содержимого BLOB-объектов не является проблемой.
blobA = container.GetBlockBlobReference("FileA");
blobB = container.GetBlockBlobReference("FileB");
string blobContentsA = blobA.DownloadText();
string blobContentsB = blobB.DownloadText();
или
string textA;
using (var memoryStream = new MemoryStream())
{
blobA.DownloadToStream(memoryStream);
textA = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
}
string textB;
using (var memoryStream = new MemoryStream())
{
blobA.DownloadToStream(memoryStream);
textB = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
}
Я попробовал приведенный ниже код, но затем я получаю сообщение «невозможно преобразовать из« System.Collections.Generic.IEnumerable »в« строку »», так что я должен что-то там делать, но чтоЯ понятия не имею, если честно.