将 CSV 文件从 S3 加载到 Snowflake 时出现 SQL 编译错误
Posted
技术标签:
【中文标题】将 CSV 文件从 S3 加载到 Snowflake 时出现 SQL 编译错误【英文标题】:SQL Compilation error while loading CSV file from S3 to Snowflake 【发布时间】:2021-08-11 06:00:26 【问题描述】:我们在将 csv 文件从 S3 加载到 Snowflake 时遇到以下问题。
SQL 编译错误:插入列值列表与期望 7 但得到 6 的列列表不匹配
我们已尝试从表中删除该列并再次尝试,但这次显示的是 expecting 6 but got 5
以下是我们用于舞台创建和复制命令的命令。
create or replace stage mystage
url='s3://test/test'
STORAGE_INTEGRATION = test_int
file_format = (type = csv FIELD_OPTIONALLY_ENCLOSED_BY='"' COMPRESSION=GZIP);
copy into mytable
from @mystage
MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE;
FILE_FORMAT = (TYPE = CSV FIELD_OPTIONALLY_ENCLOSED_BY='"' COMPRESSION=GZIP error_on_column_count_mismatch=false TRIM_SPACE=TRUE NULL_IF=(''))
FORCE = TRUE
ON_ERROR = Continue
PURGE=TRUE;
【问题讨论】:
请显示您的列名/模式 感谢 Mitch 的回复,由于安全原因,我们无法显示对象名称。 :) 那么我怀疑你会得到很多帮助。 您想查看表格中的列名及其数据类型吗? 您的 COPY INTO 命令中间有一个分号 (;),这正常吗? ... MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE; FILE_FORMAT = ... 【参考方案1】:您不能对 CSV 文件使用 MATCH_BY_COLUMN_NAME,这就是您收到此错误的原因。
以下数据格式支持此复制选项:
JSON Avro 兽人 镶木地板https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html
【讨论】:
谢谢阿蒂尔。删除此选项 MATCH_BY_COLUMN_NAME 后问题得到解决以上是关于将 CSV 文件从 S3 加载到 Snowflake 时出现 SQL 编译错误的主要内容,如果未能解决你的问题,请参考以下文章