2013-06-26 22 views
2

是新到PostgreSQL(紅移) 我從S3複製CSV文件紅移並有大約試圖挽救2.35555E7數爲numeric | 18, 0列錯誤。這個數據的正確數據類型是什麼?保存數據,如2.3214E7到PostgreSQL的

感謝

+1

http://www.postgresql.org/docs/current/static/datatype-numeric.html我會去'雙精度',這是一個標準的64位IEEE浮點數。 – wildplasser

+0

工作正常,當我嘗試:'#create table test(val numeric(18,0)); - CREATE TABLE' - '#插入測試值(2.35555e7); - INSERT 0 1' ... –

+0

正在運行'select'2.35555E7':: numeric(18,0)'似乎對我來說工作正常,表明這是該數據類型的有效輸入。 (在8.3和9.2上測試,所以不太可能是版本差異,但請在提問時指定版本!) – IMSoP

回答

5

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)每工作的意見很好,但我認爲有一個在您所設定的其他一些數據,是造成問題。