如何将文件从本地文件服务器(SFTP)直接移动到Snowflake?

时间:2019-05-03 17:57:54

标签: python azure azure-data-factory snowflake-datawarehouse pysftp

我希望使用Python Snowflake连接器将文件从几个文件服务器(通过SFTP访问)直接移至Snowflake。

我已经考虑过使用Data Factory(ADF)将文件拉入blob存储,然后创建一个Azure阶段将数据移至Snowflake。但是,我很好奇,是否有一种方法可以不将数据存储在Blob存储中?换句话说,是否可以将文件直接移动到Snowflake中而不先将它们存储在其他位置?我看不到没有存储在Blob存储中的ADF中执行此操作的方法,并且Snowflake文档指示可以通过Azure / AWS或从本地文件系统创建阶段,但是可以为需要访问的文件服务器完成此操作通过SFTP?我一直在使用Python连接器进行此操作,但似乎仍必须先将数据存储在其他位置(本地硬盘驱动器或Blob存储),然后才能将其上载到Snowflake。

2 个答案:

答案 0 :(得分:2)

假设您要使用Snowflake的批量加载机制(因此,COPY个完整文件,而不是INSERT个单行),该文件总是需要在某个时刻结束于Blob存储。

  • 您可以自己将文件从SFTP移到Blob存储,然后在Snowflake中使用COPY
  • 您可以将文件下载到本地文件系统,然后使用Snowflake的PUT命令将文件复制到暂存位置,然后再次使用COPY

无法创建指向SFTP的阶段。

更多信息here

注意:理论上,您可以从SFTP获取数据,例如在Python中使用,然后使用INSERT通过SQL插入行。然后,您无需使用舞台,但是它更复杂了,当然不值得付出努力。

答案 1 :(得分:0)

在过去几个月中,Azure 数据工厂现在通过 Snowflake 连接器与 Snowflake 进行了本地集成。因此,当前的答案是您可以在 ADF 门户中使用一个连接器。

ADF 现在支持与 Snowflake 的数据集成

Snowflake 连接器支持具有源/接收器矩阵表、映射数据流和查找活动的复制活动