Snowflake cloud data platform 如何用小写列名从拼花地板格式的雪花中卸载数据?

Snowflake cloud data platform 如何用小写列名从拼花地板格式的雪花中卸载数据?,snowflake-cloud-data-platform,snowflake-schema,Snowflake Cloud Data Platform,Snowflake Schema,我必须将雪花数据以拼花格式以小写列名卸载到外部s3位置。默认情况下,它是大写的,有办法吗 更新: 以下是创建视图的命令: create view test_view as select 'col1','col2' from target_table; 以下是复制命令: CREATE OR REPLACE FILE FORMAT dev."table_name" TYPE = 'parquet' NULL_IF = ('NULL', 'null') COMPRESSION=S

我必须将雪花数据以拼花格式以小写列名卸载到外部s3位置。默认情况下,它是大写的,有办法吗

更新: 以下是创建视图的命令:

create view test_view as select 'col1','col2' from target_table;
以下是复制命令:

CREATE OR REPLACE FILE FORMAT dev."table_name" TYPE = 'parquet'
NULL_IF = ('NULL', 'null') COMPRESSION=SNAPPY;

COPY INTO @STAGING.DEV_EXTERNAL_STAGE/20200626/data/20200626/
FROM dev.table_name file_format = dev."table_name"
OVERWRITE=TRUE HEADER = TRUE;

不确定这是否按照您希望的方式工作,但是如果您在要导出的表上创建一个视图,强制使用引号使用小写列名,那么您可以从视图而不是表中导出,并且该视图应该保存在拼花文件中。然而,不确定你是否也会在那里得到引号

CREATEVIEW语句只是硬编码字符串,而不是创建具有小写名称的列。应该是这样的:

create view test_view as select col1 as "col1", col2 as "col2" from target_table;
我也看不到使用显式小写名称创建文件格式的任何好处。我用了这个:

CREATE OR REPLACE FILE FORMAT parquet_fmt TYPE = 'parquet'
NULL_IF = ('NULL', 'null') COMPRESSION=SNAPPY;

然后在COPY INTO语句中引用了不同的文件格式,并创建了一个没有问题的文件。我不确定列名在该文件中是如何表示的,但请试一试。

在我的用例中,只需使用带引号的列名的select就可以了。因此,也许将dev.table_名称替换为FROM SELECT col1作为col1,将col2作为col2作为coldev.table_名称,如下所示可能有效

CREATE OR REPLACE FILE FORMAT dev."table_name" TYPE = 'parquet'
NULL_IF = ('NULL', 'null') COMPRESSION=SNAPPY;

COPY INTO @STAGING.DEV_EXTERNAL_STAGE/20200626/data/20200626/

FROM (
SELECT col1 as "col1", col2 AS col2 FROM coldev.table_name
)

file_format = dev."table_name"
OVERWRITE=TRUE HEADER = TRUE;

不,这不起作用,获取SQL编译错误:缺少列规范您介意共享视图的代码和COPY INTO语句吗?也许你可以用这些细节编辑你的原始问题?添加其他细节,包括运行的命令及其错误消息,可能还有一个例子可以让Mike这样的人更好地提供帮助。@Vishrant我用更多细节更新了我的答案。我在创建文件时没有收到任何错误。