提问者:小点点

如何加载Parquet/AVRO到多个列雪花模式自动检测?


当尝试将Parquet/AVRO文件加载到Snowflake表时,我收到错误:

PARQUET文件格式可以生成一个且仅有一个类型变体或对象或数组的列。如果要加载多个列,请使用CSV文件格式。

但是我不想将这些文件加载到一个新的单列表中-我需要COPY命令来匹配现有表的列。

我可以做些什么来获得模式自动检测?


共1个答案

匿名用户

好消息,该错误消息已过时,因为现在Snowflake支持模式检测和COPY INTO多列。

重现错误:

create or replace table hits3 (
    WatchID BIGINT,
    JavaEnable SMALLINT,
    Title TEXT
);

copy into hits3
from @temp.public.my_ext_stage/files/
file_format = (type = parquet);

-- PARQUET file format can produce one and only one column of type variant or object or array.
-- Use CSV file format if you want to load more than one column.

要修复错误并让Snowflake匹配表和Parquet/AVRO文件中的列,只需添加选项MATCH_BY_COLUMN_NAME=CASE_INSENSITIVE(或MATCH_BY_COLUMN_NAME=CASE_SENSITIVE):

copy into hits3
from @temp.public.my_ext_stage/files/
file_format = (type = parquet)
match_by_column_name = case_insensitive;

云文档:

  • https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html
  • https://docs.snowflake.com/en/user-guide/data-load-overview.html?#detection-of-column-definitions-in-staged-semi-structured-data-files