如何在将数据从雪花卸载到S3时将日期时间戳添加到zip文件? [英] how can I add datetime stamp to zip file when unload data from snowflake to s3?

查看:18
本文介绍了如何在将数据从雪花卸载到S3时将日期时间戳添加到zip文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望能够为我要写入S3的文件名添加时间戳。到目前为止,我已经能够使用下面的示例将文件写入AWS S3。有人能指导我如何在文件名中加上日期时间戳吗?

copy into     @s3bucket/something.csv.gz
from (select * from  mytable)
file_format = (type=csv  FIELD_OPTIONALLY_ENCLOSED_BY = '"' compression='gzip' )
single=true
header=TRUE;

提前感谢。

sql

COPY INTO语句的阶段或位置部分内的syntax for defining a path不允许函数在推荐答案中动态定义它。

但是,您可以通过JavaScript Date APIssome string formatting使用stored procedure来完成动态查询的构建。

这里是一个非常简单的用例示例,带有一些代码adapted from another question

CREATE OR REPLACE PROCEDURE COPY_INTO_PROCEDURE_EXAMPLE()
RETURNS VARIANT
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
    var rows = [];

    var n = new Date();
    // May need refinement to zero-pad some values or achieve a specific format
    var datetime = `${n.getFullYear()}-${n.getMonth() + 1}-${n.getDate()}-${n.getHours()}-${n.getMinutes()}-${n.getSeconds()}`;

    var st = snowflake.createStatement({
        sqlText: `COPY INTO '@s3bucket/${datetime}_something.csv.gz' FROM (SELECT * FROM  mytable) FILE_FORMAT=(TYPE=CSV  FIELD_OPTIONALLY_ENCLOSED_BY='"' COMPRESSION='gzip') SINGLE=TRUE HEADER=TRUE;`
    });

    var result = st.execute();
    result.next();
    rows.push(result.getColumnValue(1))

    return rows;
$$

要执行,请运行:

CALL COPY_INTO_PROCEDURE_EXAMPLE();

以上缺少完善的日期格式处理(填零的月、日、小时、分、秒)、错误处理(如果COPY INTO失败)、输入查询参数化等,但它应该给出如何实现这一点的大致思路。

这篇关于如何在将数据从雪花卸载到S3时将日期时间戳添加到zip文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆