【问题标题】:send data from stage to multi column table in snowflake将数据从舞台发送到雪花中的多列表
【发布时间】:2021-09-25 09:37:04
【问题描述】:

我有一个内部命名阶段,其中存储 json 文件,我想从那里将​​它们存储在雪花表中。目的表结构如下,

file_name (string)
load_date (timestamp)
data      (variant)

我正在使用以下查询将数据从阶段移动到表

copy into tableName (data) from @stagename/filename.json;

但是上面的查询只是填充数据列,我想要的也是插入时间戳和文件名。知道我需要在查询中进行哪些更改吗?谢谢

【问题讨论】:

    标签: sql snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    您需要使用带有转换的COPY 语句 - 文档here。当您使用该方法时,您可以查询文件的元数据以获取文件名、行号等 - here 的文档。

    示例文件 filename.json 上传到名为 stagename 的内部阶段:

    [{"name": "simon"},{"name": "jason"}, {"name": "jessica"}]
    

    Sql 加载创建和加载表:

    -- Create example table first with 3 columns
    create or replace transient table test_table
    (
        file_name varchar,
        load_date timestamp,
        data      variant
    );
    
    
    -- Load with transformation: 
    copy into test_table (file_name, load_date, data) from (
        select
            metadata$filename,
            current_timestamp,
            f.$1
        from @stagename/filename.json f
    )
        file_format = (
            type = json
                strip_outer_array = true
            )
        force=true
    ;
    

    结果:

    +-------------+-----------------------------+-----------------------+
    |FILE_NAME    |LOAD_DATE                    |DATA                   |
    +-------------+-----------------------------+-----------------------+
    |filename.json|2021-07-16 08:56:24.075000000|{"name": "simon"}      |
    |filename.json|2021-07-16 08:56:24.075000000|{"name": "jason"}      |
    |filename.json|2021-07-16 08:56:24.075000000|{"name": "jessica"}    |
    +-------------+-----------------------------+-----------------------+
    

    【讨论】:

    • 感谢西蒙的回复。我正在使用您上面的副本使用我自己的列和表名进行查询,但我收到以下消息作为结果。执行复制,处理了 0 个文件。对此有任何想法吗? @西蒙
    • 这可能是因为您之前已经复制了该文件。 Snowflake 不会将文件复制到先前已复制的表中。如果要强制它再次复制到表中,则需要使用 force=true 选项。我已经用 force=true 更新了我的答案。
    • 哦对对对。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 2021-08-01
    • 1970-01-01
    相关资源
    最近更新 更多