如何将Snowflake中的大量数据(超过100MB)提取到CSV中



我正试图将雪花中的大量数据导出到CSV中。我看到了一个类似的问题,给出的解决方案是"将查询作为COPY INTO{location}命令的一部分运行到内部阶段,然后使用GET命令在本地将其下拉。">

我尝试按照指南进行操作,并运行了以下操作,但收到错误:"SQL编译错误:位置3处的语法错误第4行意外的'file_format'。"我不知道如何解决这个问题,甚至不知道我的语法的第一部分是否正确。有人能帮忙吗。

copy into @my_stage/result/data_ from (select *
from"IRIS"."PRODUCTION"."VW_ALL_IIS_LHJ"
where (RECIP_ADDRESS_COUNTY = 06065 or ADMIN_ADDRESS_COUNTY = 06065) 
file_format=(TYPE='CSV');
[ HEADER = TRUE]                                      
get @%my_stage/result/data.csv/;         

我很确定问题是缺少了一个右括号。尝试:

copy into @my_stage/result/data_ from (select *
from"IRIS"."PRODUCTION"."VW_ALL_IIS_LHJ"
where (RECIP_ADDRESS_COUNTY = 06065 or ADMIN_ADDRESS_COUNTY = 06065))
file_format=(TYPE='CSV');
[ HEADER = TRUE]                                      
get @%my_stage/result/data.csv/;         

对不起,我没有办法测试这个。

where子句后面缺少一个括号。您在第一个FROM后面打开了一个圆括号,然后在WHERE子句中打开了另一个,但只关闭了WHERE圆括号。

此外,AFAIK,如果舞台设置得当,你不需要叫get。copy into命令会将其放置在您的阶段中,然后从该阶段检索它,但您可以通过访问指定阶段的正常方式来执行此操作。因此,如果您将其发送到s3存储桶,您只需访问s3中的资源,就好像它是任何其他文件一样。

最后,请记住,在FILE_FORMAT中可以指示许多有用的参数,例如Record_delimiter、压缩和如何处理null。删除csv后的最后一个分号,这将导致另一个错误,因为HEADER本身不是一个有效的指令。

此外,您不必将HEADER=TRUE放在括号之间。文档中的括号表示它是一个可选参数。

最新更新