2017-07-11 6 views
0

データをロードしようとしていました。 49.9999〜数値(9,4)列。どのくらいコピーコマンドを使用して、値を二捨五入して50.00にしています。Amazon Redshiftが数値(9,4)値を間違って切り上げる

コピーコマンドサンプル:

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数値(9.4)のようなデータ型を有するされているが、データを処理している間、データを切り上げています。

このシナリオの処理方法を教えてください。

+1

ROUNDECパラメータを除外すると正しく動作しますか? –

答えて

0

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; 

私が間違った仮定をした場合は、コメントしてください。

関連する問題