我在null
存储桶中有一个文件列表,如下所示。我只想加载当前的日期文件,例如,
我想获取2020/06/09下的所有file_a.csv,类似地获取同一2020/06/09下的所有file_b.csv
我尝试了语法,但是这使我获得了所有日期的所有文件
s3
select metadata$filename from @stage/snflk/ts/(file_format=>CSV_SKIP_HEADER,pattern=>'.*/file_a.*[.]csv')
答案 0 :(得分:1)
我只想加载当前日期文件
.*/file_a.*[.]csv
这使我获得了所有日期的所有文件
此处开头提供的模式(.*
)是通配符,将匹配所有可用的内容。
如果您需要将日期限制为一个常数值,请在regular expression pattern内指定常数值(即ts-prod.*/2020/06/09/file_a\.csv
,ts-prod.*/2020/06/09/file_b\.csv
等):
select
metadata$filename
from @stage/snflk/ts/
(pattern=>'ts-prod.*/2020/06/09/file_a\.csv');
要反复测试和编写正则表达式模式,可以使用Regex101,RegExr等网络工具。
Ps。。如果您要自动执行此操作,还可以将模式构造为use the current date dynamically:
-- Produces 'ts-prod.*/2020/06/11/file_a\.csv'
SET curr_dt_a=(
SELECT
'ts-prod.*/' ||
TO_VARCHAR(CURRENT_DATE(), 'YYYY/MM/DD') ||
'/file_a\\.csv'
)
-- Referenced as a SQL variable in the PATTERN option
SELECT
metadata$filename
FROM @stage/snflk/ts/
(PATTERN=>$curr_dt_a);