简体   繁体   English

COPY INTO snowflake 命令的语法错误

[英]syntax error with COPY INTO snowflake command

I am trying to populate a table in Snowflake from a file in an s3 bucket.我正在尝试从 s3 存储桶中的文件填充 Snowflake 中的表。 I have verified that the Storage Integration is working and so according to the docs, I don't need an External Stage.我已经验证存储集成正在工作,因此根据文档,我不需要外部阶段。

It also seems that in order to populate a table using a Parquet file format, I need to specify the columns in the copy command, per posts in Snowflake community forum.似乎为了使用 Parquet 文件格式填充表,我需要在复制命令中指定列,每个帖子都在雪花社区论坛中。

My command is giving a syntax error no matter what changes I make.无论我进行什么更改,我的命令都会出现语法错误。 If I remove the '(' after the s3 bucket url, I get the error如果我在 s3 存储桶 url 之后删除“(”,则会收到错误消息

    "unexpected SELECT"

but if I leave it in, I get the error但如果我把它留在里面,我会得到错误

    "unexpected '(' "

My code:我的代码:

    COPY INTO MYTABLE
        FROM s3://bucket/folder2/File.snappy.parquet (
       SELECT 
       O_ID: NUMBER(19,0),        

       O_TYPE:VARCHAR(48),        

       C_ID:NUMBER(19,0),

       ON_ID:FLOAT,

       SE_ID:NUMBER(19,0),

       C_MATCH:BOOLEAN 

    )

        STORAGE_INTEGRATION = MY_INTEGRATION
        FILE_FORMAT=(
           TYPE = 'PARQUET' 
          SNAPPY_COMPRESSION = TRUE
       )
      ;

Can someone tell me how to fix the syntax here?有人可以告诉我如何在这里修复语法吗?

I believe your command should be like我相信你的命令应该像

    COPY INTO MYTABLE ( 
       O_ID: NUMBER(19,0),        
       O_TYPE:VARCHAR(48),        
       C_ID:NUMBER(19,0),
       ON_ID:FLOAT,
       SE_ID:NUMBER(19,0),
       C_MATCH:BOOLEAN 
       )
       FROM (
       SELECT
       $1,
       $2,
       $3,
       $4,
       $5,
       $6 
       FROM s3://bucket/folder2/File.snappy.parquet 
       )
        STORAGE_INTEGRATION = MY_INTEGRATION
        FILE_FORMAT=(
           TYPE = 'PARQUET' 
          SNAPPY_COMPRESSION = TRUE
       )
      ;
```

Please try and let me know if it works.

Table needs to be created before COPY INTO:在 COPY INTO 之前需要创建表:

CREATE OR REPLACE TABLE MYTABLE (
    O_ID NUMBER(19,0),        
    O_TYPE VARCHAR(48),        
    C_ID NUMBER(19,0),
    ON_ID FLOAT,
    SE_ID NUMBER(19,0),
    C_MATCH BOOLEAN 
);


COPY INTO MYTABLE (
    O_ID,        
    O_TYPE,     
    C_ID,
    ON_ID,
    SE_ID
)
FROM s3://bucket/folder2/File.snappy.parquet

STORAGE_INTEGRATION = MY_INTEGRATION
FILE_FORMAT = (
    TYPE = 'PARQUET' 
    SNAPPY_COMPRESSION = TRUE
)
;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM