【发布时间】:2021-12-25 08:14:01
【问题描述】:
我有点情况。我有一个顽固的客户,他想从网络浏览器上传大约 5gb 的 csv 文件。该文件的最终目标是访问 SQL Server,但我决定先将其放入 blob,然后有一个进程从 Blob 读取它并将其写入表。
为了让事情变得更复杂,我需要在开始将文件上传到 blob 之前验证文件结构(即文件格式、列数等)是否准确。如果这些不正确,我必须让用户知道文件上传无法完成。
要达到这些要求:
-
用户将从 UI 上传文件,我们的代码首先检查文件格式(列名、文件扩展名等)是否正确,然后将文件流式传输到 blob 存储。
-
一旦文件上传到 blob,我正在考虑使用 azure 函数,该函数将读取每 10K 行并通过转到表 A 来验证数据是否正确,然后将数据插入表 B。如果某些数据不准确,将数据行写入blob中的另一个目录供用户下载。我将重复这个过程,直到整个文件存储到表 B 中。
但是,我很困惑是采用上述 2 方法还是使用第 3 方法
- 使用 Azure 数据工厂并创建管道以从 blob 获取文件并将其放入临时表中。一旦它在暂存表中可用,我需要通过使用另一个表验证数据来验证数据,然后将有效记录插入到目标表中。最后,无效记录将被写入第三张表(错误表),并将端点提供给用户下载该表的内容。
我很困惑是使用第二种方法还是第三种方法。请建议哪一个可能很快或不太可能出现性能问题。
如果您可以分享有关整体方法的 cmets,那就太好了。
非常感谢
【问题讨论】:
标签: azure-functions azure-blob-storage azure-data-factory large-file-upload