将Snowflake表卸载到镶木地板中的s3时保留模式



Snowflake上的我的表包含一个创建为INT的字段,默认为NUMBER(38,0)作为Snowflak数据类型。

当我用COPY命令将该表卸载到镶木地板格式的s3时,我希望保留整个模式,包括该字段的精度。但是,生成的镶木地板具有INT32 Decimal(precision=9, scale=0)

在Snowflake文档中,提到

/*要在输出文件中保留表模式,请使用简单的SELECT语句(例如SELECT*FROM cities(。*/

但是,我下面的查询并不能保持精度不变。

COPY INTO @staging.dl_stage/prediction/vehicle/export_date=20200226/file 
FROM (
SELECT * FROM  snd_staging.PREDICTION.vehicle
)
FILE_FORMAT=(type='parquet' COMPRESSION = AUTO)
HEADER = TRUE
OVERWRITE = TRUE
SINGLE = False
MAX_FILE_SIZE=256000000;

是否可以强制保持Snowflake数据类型精度不变?

我最终通过运行以下程序解决了这个问题:

alter session set ENABLE_UNLOAD_PHYSICAL_TYPE_OPTIMIZATION = false; 

最新更新