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