【发布时间】:2021-01-17 02:51:59
【问题描述】:
我们正在尝试使用 COPY INTO 将数据从 S3 存储桶加载到 Snowflake。 完美运行.. 但是子文件夹中的数据也被复制了,这不应该发生。
遵循硬编码模式 REGEX 完美运行
copy into TARGETTABLE
from @SOURCESTAGE
pattern='^(?!.*subfolder/).*$'
但我们不想硬编码文件夹名称。当我只保留“/”时,它不再起作用了..(当我转义斜线 \/ 时也会发生同样的情况)
copy into TARGETTABLE
from @SOURCESTAGE
pattern='^(?!.*/).*$'
有人知道使用哪个 REGEX 以动态方式跳过 COP INTO 中的任何子文件夹吗? (文件夹名称没有硬编码)
@test_stage/folder_include
@test_stage/folder_include/file_that_has_to_be_loaded.csv
@test_stage/folder_include/folder_exclude/file_that_cannot_be_loaded.csv
所以只有folder_include 中的文件可以被copy into 语句拾取。需要跳过较低级别的所有内容。 最重要的是:没有对文件夹名称进行硬编码。 folder_include 中的任何文件夹都必须被忽略。
谢谢!
【问题讨论】:
-
我想这可能已经在这里得到了回答:How to avoid sub folders in snowflake copy statement
-
您好,尼克,感谢您的回答。事实上并非如此。此解决方案提供硬代码修复。不是动态的。该解决方案显示了如何按名称跳过子文件夹。我需要一个更通用的解决方案。
-
您要保留的模式是否只包含一个斜线字符(即子文件夹包含 2 个或更多斜线)?如果是这样,这可能会有所帮助(显然将 % 更改为 /):stackoverflow.com/questions/16762492/…
-
源阶段中的任何文件夹都将包含至少 1 个 '/' 。我试过了,但没有帮助。谢谢。
-
如果顶级文件夹(您要从中加载的文件夹)包含 1 个“/”,那么子文件夹是否必须包含超过 1 个“/”?如果是这种情况,那么为什么对单个“/”进行过滤不起作用?
标签: copy snowflake-cloud-data-platform stage