【问题标题】:saving data like 2.3214E7 into postgresql将 2.3214E7 等数据保存到 postgresql
【发布时间】:2013-06-26 10:26:50
【问题描述】:

我是 postgresql 新手(红移) 我正在将 CSV 文件从 S3 复制到 RedShift,尝试将 2.35555E7 数字保存到 numeric | 18, 0 列时出错。该数据的正确数据类型是什么?

谢谢

【问题讨论】:

  • postgresql.org/docs/current/static/datatype-numeric.html 我会选择 double precision ,这是一个标准的 64 位 IEEE 浮点数。
  • 我尝试时效果很好:# create table test (val numeric(18,0)); -- CREATE TABLE -- # insert into test values (2.35555e7); -- INSERT 0 1...
  • Running select '2.35555E7'::numeric(18,0) 对我来说似乎工作正常,这表明这是该数据类型的有效输入。 (在 8.3 和 9.2 上测试过,所以不太可能是版本差异,但请在提出此类问题时指定版本!)
  • “一个错误”。错误是,正是

标签: postgresql amazon-redshift


【解决方案1】:

numeric (18,0) 表示比例为零,这是一种表示没有小数的方式——它有点像一个较小的 bigint。

http://www.postgresql.org/docs/current/static/datatype-numeric.html

如果您想将其保留为数字,您想使用 numeric 代替 - 没有精度或比例。

如果没有,只需使用 realdouble precision 类型,具体取决于您想要保留的有效数字位数(分别为 6 和 15)。

您的示例数据 (2.35555E7) 表明您使用的是 real,所以可能先尝试一下。


注意:select 2.35555E7::numeric(18,0) 对于 cmets 来说工作正常,但我认为您的数据集中还有一些其他数据会导致问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2021-08-12
    • 2018-07-25
    • 2019-02-24
    相关资源
    最近更新 更多