我在 AWS Redshift 中创建了一个表,例如
CREATE TABLE exampleTableName (
id int identity(1,1),
accId varchar(16) encode zstd,
amount float4,
primary key(id)
)
distkey(accId)
interleaved sortkey(accId);
表中的示例记录的amount
字段值为120.12
。
但是,当我尝试通过执行 UNLOAD 导出数据时,生成的文件(本质上是 CSV)对字段值具有额外的精度。
卸载命令:
UNLOAD ('SELECT * from exampleTableName')
TO 's3://bucket/prefixFile_'
IAM_ROLE 'XXX'
HEADER
ADDQUOTES
PARALLEL OFF
MAXFILESIZE AS 5gb
DELIMITER AS ','
GZIP;
结果输出中的字段值:(120.120003
即它增加了 4 个小数位,原始数据集中没有)。
为什么会发生这种情况,如何防止附加精度(即小数位)作为 UNLOAD 命令的一部分输出?
来自AWS 论坛的回答: