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

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

在Snowflake文档中,提到了

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

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

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;

09-30 20:50