从Snowflake阶段获取文件列表?



目标是仅将舞台上的最后几个文件复制到表中(基于日期)。我正试图在《雪花》中找到一种直接的方法来做到这一点。

我知道有LIST命令根据模式给出文件列表。但这并不是可用的(如你不能使用它在一个select语句)。有这个场景的JS解决方案,这是一个有点hacky,但无论如何,我可以复制文件基于文件名/模式和数据修改从舞台到一个表?

您可以使用pattern参数来实现此需求,其中您可以根据标准选择特定的文件集。详细信息和示例在这里:https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html#syntax

使用模式匹配的示例:https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html#loading-using-pattern-matching

您可以创建一个Snowpipe,将自动摄取设置为false,并使用:

alter pipe <pipe_name> refresh PREFIX = ‘<path>’ MODIFIED_AFTER = <start_time>;

MODIFIED_AFTER是一个时间戳(ISO-8601格式),你想要加载的基于LAST_MODIFIED日期的最老文件(即文件被分阶段的日期)。

查看更多信息&这里的例子https://docs.snowflake.com/en/sql-reference/sql/alter-pipe.html#alter-pipe

注意-刷新功能不适合常规使用。

我认为唯一的选择如果你不想使用Snowpipe,是使用的文件=参数只摄取特定的文件你想要的,然后只有手动控制包括文件如果你希望根据他们last_modified日期,但如果你有一个大容量的文件,这不是可行的(除非你做编程,然后你远离简单解决方案后)。https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html可选参数

最新更新