S3 Bucket Stage 上的正则表达式 - 来自 Snowflake
Posted
技术标签:
【中文标题】S3 Bucket Stage 上的正则表达式 - 来自 Snowflake【英文标题】:Regex on S3 Bucket Stage - From Snowflake 【发布时间】:2021-05-12 00:26:58 【问题描述】:我正在尝试创建下表:
create or replace table great_table as (
SELECT
$1:test::STRING as testt,
$1:testt::STRING as account_name,
$1:testttt::STRING as testttt,
$1:testttttt::DATE as testttttt
from '@A_STAGE/20210510/object_name/part'
)
;
但我想获取 2021 年的所有数据,而不必重新配置存储桶结构。 有没有办法从艺名中的雪花做正则表达式?所以像
@A_STAGE/202%/object_name/part'
【问题讨论】:
【参考方案1】:我相信您正在寻找的是利用 PATTERN 选项从阶段进行查询。此选项的文档位于此处,您最终要做的是从@A_STAGE
中进行选择,然后在格式选项中使用 PATTERN 来定义要从中选择的文件(和文件夹)的正则表达式。
https://docs.snowflake.com/en/user-guide/querying-stage.html#query-syntax-and-parameters
但是,如果您从该选择创建表,您可能应该运行 COPY INTO 语句,这也是相同的 PATTERN 选项:
https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html
或者,也许您可以考虑利用外部表,这取决于 S3 中的基础文件是如何创建、替换、删除等的。
https://docs.snowflake.com/en/sql-reference/sql/create-external-table.html
【讨论】:
迈克沃尔顿 - 感谢您的反馈。我在使用下面的示例时遇到问题,了解要交换的内容 - 你能帮忙把 file:///tmp/data*.csv @mystage1;尝试:put file:A_STAGE/202*/object_name/part' select t.$1, t.$2 from @mystage1 (file_format => 'myformat', pattern=>'.*202.*[.]c以上是关于S3 Bucket Stage 上的正则表达式 - 来自 Snowflake的主要内容,如果未能解决你的问题,请参考以下文章
关于aws-s3-bucket-静态网站托管相关的查询-S3.Client.get_bucket_website(**kwargs)