我有一个数据集(.tsv 格式),其中一列是date ofbirth。但是,数据很旧,并且并非所有日期都是YYYY-MM-DD
格式。一些条目只有他们的出生年份(缺少出生月份和日期)并且采用格式YYYY-##-##
(字面上##
的 's 已经插入数据中,只要知道年份)。我希望将此数据集加载到我的postgres数据库中,出生日期列的数据类型为 asdate
和 not string
,以便我可以对日期进行比较。
一个小样本如下所示。(不相关的数据列未显示)
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
然后将修改后的数据插入到数据库中。但我不喜欢这个主意——
- 这很耗时。
- 这会占用磁盘空间(因为我想保留原始的“未篡改”数据)
- 此外,并非我的所有数据在我的数据库中都是真实的。
有什么方法可以让 postgres 以某种方式直接获取日期,只需忽略“##”(并保留缺少月份和日期的年份)?
或者有没有更好的办法解决这个问题?