我有一個數據集(以.tsv格式)其中一列是出生日期。但是,數據是舊的,並不是所有的日期格式都是YYYY-MM-DD
。有些參賽作品的出生年份(出生月份和出生日期均已丟失),格式爲YYYY-##-##
(字面上##
已插入數據,只有已知年份)。我希望將此數據集加載到我的postgres數據庫中,其中出生日期列的數據類型爲date
,而不是string
,以便我可以對日期進行比較。
下面顯示了一個小樣本。 (數據的不相關的列未示出)Postgresql日期格式
1924-##-##
1965-09-04
1944-11-05
1951-##-##
-388-##-##
1893-01-26
1037-##-##
直接批量加載數據集明顯給出錯誤
ERROR: invalid input syntax for type date: "1924-##-##"
LINE 1: insert into d values ('1924-##-##');
^
對數據集進行相當大的,具有約6億盧比條目。目前我正在考慮運行一個腳本,用01
替換這些##
的腳本,然後將修改後的數據插入到數據庫中。但我不喜歡這個想法 -
- 這是非常耗時的。
- 這是磁盤空間消耗(因爲我想保留原始的「umtampered」數據)
- 此外,並非所有的數據在我的數據庫中都是真實的。
有沒有什麼辦法可以讓postgres以某種方式把日期變成現實,只是忽略了##(s)(並且只保留了幾個月和幾天都沒有的年份)呢?
或者有沒有更好的解決方案來解決這個問題?
Upvoted但只是一個小附記,你實際上並沒有存儲date_parsed。你可以做一些類似table的方法,然後限制它的輸出,所以你知道你的輸入日期總是被解析。有關表格方法的更多信息,請參閱我寫的這篇博客文章:http://ledgersmbdev.blogspot.com/2012/08/postgresql-or-modelling-part-2-intro-to.html – 2012-09-08 05:15:35