如何将 zip 文件上传到 Azure Blob,然后将其解压缩到那里



我有很多zip文件,其中只有很少的文件夹和50+个文件。如何将这些 zip 文件上传到 azure blob,然后将其解压缩到那里。

解压缩服务器中的文件并将其中的文件逐个上传到 Azure Blob 将是一个繁琐的过程。

Azure 是否有任何简单的方法可以实现此目的,或者是否有任何解决方法?

我正在PHP中实现这一点。

简单的答案是 Azure Blob 存储不会为你解压缩。这是您需要自己做的事情。你怎么做取决于你。

一种可能性是(如您提到的)将zip文件上传到服务器上,将它们解压缩到那里,然后上传单个文件。

另一种可能性是通过后台进程解压缩,如果您担心 Web 服务器上发生的处理。在此方法中,只需在 Blob 存储中上传 zip 文件。然后通过一些后台进程(可能是 WebJobs、函数、辅助角色或虚拟机),下载这些 zip 文件,解压缩它们,然后重新上传这些单独的文件。

要按需触发后台进程,上传 zip 文件后,您只需在队列中写入一条消息,告诉后台进程下载 zip 文件并开始解压缩过程。

正如您可能已经遍布互联网的那样,不可能在存储服务器内部运行工作负载......但: 可以将 azure 函数写入 FileWatch 存储帐户,并为你解压缩文件,然后上传它们

正如@Gaurav提到的那样,解压缩并不被天真地支持。有一个反馈项目将其作为一项功能包含在内,但被拒绝了。我可以想到两个可能感兴趣的选择。

1) 生成执行解压缩的 Azure 数据工厂自定义活动。将文件上传到临时位置后,可以在管道中解压缩文件并将其写入应用程序容器。这将需要一个批处理服务实例,但数据工厂将负责所有业务流程,并为你提供一个管理工具来发出故障警报等。

2) 使用 adlcopy.exe将 blob 从 Azure Blob 存储移动到 Azure Data Lake 存储。进入数据湖存储后,您可以构建自己的自定义提取器并查询 zip/gzip 文件。在再次浏览文档后,USQL 似乎确实能够在本地执行此操作。在 EXTRACT 表达式中查找从压缩数据中提取部分。

3) 将 PolyBase 与 SQL 数据仓库结合使用,它可以本机读取 zip/gzip 文件。这是最简单但可能是最昂贵的选择。请参阅创建外部表和创建外部文件格式。

4)正如@EvertonMc刚才提到的,您可以使用触发器上的Azure函数来完成此操作,这也是一个不错的选择。

祝你好运,让我们知道你过得怎么样。

相关内容

最新更新