我正在使用Azure函数,该函数应该读取两个存储为Azure Blob存储中的Blob的.csv文件,并返回第三个新的Blob,且两个输入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并将它们加载到两个不同的Datatable中并在它们之间进行比较,我确实设法使其工作。但是,该方法太慢了,我很确定有一种更有效的处理方法。
(在Powershell中,在家中使用Compare-Object函数有点像我想创建的东西)。
我可以使用.DownloadText()或.DownloadToStream()方法加载Blob,因此获取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'转换为'string'”的消息,所以我想我必须在此处做些什么,但是我没有任何线索诚实。