Snowflake cloud data platform 删除外部阶段而不删除S3文件

Snowflake cloud data platform 删除外部阶段而不删除S3文件,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我将csv文件从AmazonS3加载到Snowflake,首先加载到指向AmazonS3的Snowflake外部阶段,然后使用COPY命令。据我所知,一旦移动完成,清除功能将清除或保持舞台完整。我将同一阶段用于相同性质的后续调用,禁用清除将创建重复项并继续在同一阶段中进行堆栈。remove调用似乎清除了stage,但也清除了我的S3文件 是否有一种方法可以在保留s3文件不变的情况下清除后台文件?对于您最初的问题“是否有一种方法可以在保留s3文件不变的情况下清除后台文件?”的答案是否定的。外部后台

我将csv文件从AmazonS3加载到Snowflake,首先加载到指向AmazonS3的Snowflake外部阶段,然后使用COPY命令。据我所知,一旦移动完成,清除功能将清除或保持舞台完整。我将同一阶段用于相同性质的后续调用,禁用清除将创建重复项并继续在同一阶段中进行堆栈。remove调用似乎清除了stage,但也清除了我的S3文件


是否有一种方法可以在保留s3文件不变的情况下清除后台文件?

对于您最初的问题“是否有一种方法可以在保留s3文件不变的情况下清除后台文件?”的答案是否定的。外部后台文件是对文件位置(以及该位置中的文件)的引用,因此清除后台文件(即删除引用位置中的文件;这就是“清除”的意思)但从逻辑上讲,将文件保留在该位置是不可能的

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

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


如注释中所述,即使您一直从同一阶段加载数据(不清除)您不会创建重复项,因为Snowflake会识别它也处理过的文件,并且不会重新加载它们。

您可以从aws s3存储桶创建一个阶段,然后使用该阶段直接加载到Snowflake中。您尝试过这种方法吗?那么您根本不必清除。请让我知道。此外,如果您使用的是外部阶段,则这取决于您知道如何将文件写入s3存储桶。请让我知道我是否正确理解您的问题?如果我的问题可能不清楚,很抱歉,我正在创建一个以url作为s3存储桶的阶段(特别是一个文件),然后从该阶段复制到。我在后续调用中将此阶段用于相同的工作流,并希望前面的阶段数据清晰。为什么不以文件在s3中唯一的方式命名该文件。此外,雪花复制命令智能化,不会再次加载同一文件。然后您可以尝试s3生命周期e根据您的意愿删除s3对象。这是否回答了您的问题?