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;