首页 > 解决方案 > 删除外部阶段而不删除 S3 文件

问题描述

我将 csv 文件从 Amazon S3 加载到 Snowflake,方法是首先加载到指向 Amazon S3 的 Snowflake 外部阶段,然后使用 COPY 命令。据我了解,一旦移动完成,清除功能就会清除或保持舞台完好无损。我将同一阶段用于相同性质的后续调用,并且禁用清除会创建重复项并继续在同一阶段堆叠。删除调用似乎清除了舞台,也清除了我的 S3 文件。

有没有办法可以在保持 s3 文件完整的同时清除舞台?

标签: snowflake-cloud-data-platform

解决方案


您最初问题的答案“有没有一种方法可以在保持 s3 文件完整的同时清除舞台?” 没有。外部阶段是对文件位置(以及该位置中的文件)的引用,因此清除阶段(即删除引用位置中的文件;这就是“清除”的意思)但将文件保留在该位置是不合逻辑的可能的。

如评论中所述,如果您想在 S3 中保留文件的副本,那么当您将它们复制到舞台位置时,只需将它们同时复制到另一个 S3 位置即可。

当您说“我正在使用同一阶段进行后续相同性质的呼叫”时,我不完全理解。我假设您没有尝试再次加载相同的文件,所以如果这是一组不同的文件,为什么不使用引用不同 S3 位置的不同阶段?

正如评论中提到的那样,即使您继续从同一阶段加载数据(不清除),您也不会创建重复项,因为 Snowflake 会识别它也处理过的文件并且不会重新加载它们。


推荐阅读