【问题标题】:Regex on S3 Bucket Stage - From SnowflakeS3 Bucket Stage 上的正则表达式 - 来自 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'

【问题讨论】:

    标签: amazon-s3 snowflake-cloud-data-platform


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多