【发布时间】:2020-10-02 10:26:23
【问题描述】:
我正在尝试解决 2 个问题
问题 1. 复制命令创建了所有列都为大写字母的 HEADER,但我需要生成带有所需应用程序的标题
例如
预期的标题:
AcctID,qute_c,AcctNumber,AcctName,MRR
问题 2: 该过程将文件从 Snowflake 查询上传到 s3。当有行时,它会上传可以正常工作的文件,但是当没有返回行时,不会上传任何按预期工作的文件
但是,我只想在没有返回行的情况下上传带有 HEADER 的空文件
COPY INTO '@stage/path/test.csv'
FROM (SELECT A.AcctID,B.qute_c,A.AcctNumber,A.AcctName,B.MRR FROM TABLE A , TABLE B WHERE A.AcctID=B.AcctID AND A.C_DATE = CURRENT_DATE())
MAX_FILE_SIZE = 5368706371
FILE_FORMAT = (FORMAT_NAME = 'CSV_TEXTQUOTE_NOZIP')
OVERWRITE=TRUE
SINGLE=TRUE
HEADER = TRUE;
【问题讨论】:
-
请参考COPY INTO的使用说明
docs.snowflake.com/en/sql-reference/sql/…... "如果源表包含0行,则COPY操作不会卸载数据文件。" -
是的,我知道,我们需要发送空文件,因为上游应用程序一直需要文件
-
一种方法是在没有行的情况下使用单独的文件格式使用单独的 COPY INTO 语句。您可以使用一种文件格式,指定不打印标题,而是将“标题”作为单行中的列值发送。您将表定义为所有 varchar 列,并有一行包含列的名称。当您需要发送一个空的结果集文件时,您将从该表执行 COPY INTO 阶段。这充其量只是一种解决方法,但它会起作用。
标签: snowflake-cloud-data-platform snowflake-schema