将 csv 文件插入到雪花中,因为变体不起作用

问题描述 投票:0回答:2

我正在尝试将 csv 数据复制到只有一列(变体)的雪花表中。当我运行 copy into 语句时,我的变体列仅显示第一列中的数据。我不确定问题是什么。请帮忙。

创建或替换表名( 原始版本)

复制到db_name.table_name FROM (SELECT s.$1::VARIANT FROM @stage_name.csv s);

snowflake-cloud-data-platform
2个回答
2
投票

假设您的 .csv 文件由多个有效的 JSON 组成,请尝试使用 JSON 类型的文件格式而不是 .csv。请参阅https://docs.snowflake.com/en/sql-reference/sql/create-file-format.html。 或者,在 SELECT 中使用 PARSE_JSON。


0
投票

在您的场景中,当将数据加载到单个 VARIANT 列时,Snowflake 希望每个 CSV 行被视为该列的单个值。但是,使用当前的 COPY INTO 命令,它仅获取第一列,因为查询选择 s.$1::VARIANT,它仅引用 CSV 的第一列。

要将整行捕获为单个 VARIANT 列中的类似 JSON 的结构,您可以使用 OBJECT_CONSTRUCT 函数从整行创建 JSON 对象。以下是修改 COPY INTO 语句的方法:

COPY INTO db_name.table_name FROM (SELECT OBJECT_CONSTRUCT(*) FROM @stage_name.csv s);

此方法会将每一行作为 JSON 对象加载到 VARIANT 列中,捕获 CSV 文件中的所有列。

© www.soinside.com 2019 - 2024. All rights reserved.