【问题标题】:Amazon Redshift incorrectly rounding up Numeric(9,4) valueAmazon Redshift 错误地四舍五入 Numeric(9,4) 值
【发布时间】:2017-07-11 07:40:32
【问题描述】:

我试图加载数据,例如49.9999 进入 numeric(9,4) 列。如何通过复制命令将值四舍五入到 50.00

复制命令示例:

COPY <table_name> (PRICE_BAND_CODE,PRICE_BAND_DESC,PROD_LEVEL1_CODE,PRICE_BAND_LOWER,PRICE_BAND_UPPER,PRICE_BAND_SEQ)
FROM '<s3 path>/PriceBandDIM.gz'
credentials 'aws_access_key_id=xxxxxxxxxxxx;aws_secret_access_key=xxxxxxxxxxxxxxxx' 
delimiter '|'
IGNOREBLANKLINES EMPTYASNULL GZIP NULL AS '\000'
ROUNDEC BLANKSASNULL TRIMBLANKS REMOVEQUOTES
STATUPDATE ON IGNOREHEADER 0;

PRICE_BAND_LOWERPRICE_BAND_UPPER 的数据类型为 numeric(9,4),但在处理数据时会将数据四舍五入。

请告诉我如何处理这种情况。

【问题讨论】:

  • 排除ROUNDEC参数是否正常?

标签: amazon-web-services amazon-redshift type-conversion


【解决方案1】:

ROUNDEC 参数必须取消。当输入值的小数位数大于列的小数位数时,向上舍入数值。默认情况下,COPY 会在必要时截断值以适应列的比例。

COPY <table_name> (PRICE_BAND_CODE,PRICE_BAND_DESC,PROD_LEVEL1_CODE,PRICE_BAND_LOWER,PRICE_BAND_UPPER,PRICE_BAND_SEQ)
FROM '<s3 path>/PriceBandDIM.gz'
credentials 'aws_access_key_id=xxxxxxxxxxxx;aws_secret_access_key=xxxxxxxxxxxxxxxx' 
delimiter '|'
IGNOREBLANKLINES EMPTYASNULL GZIP NULL AS '\000'
BLANKSASNULL TRIMBLANKS REMOVEQUOTES
STATUPDATE ON IGNOREHEADER 0;

如果我做了一个错误的假设,请发表评论,我会重新调整我的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多