【发布时间】:2016-07-13 23:28:33
【问题描述】:
我是一个初学者,已经到处搜索了,所以请多多包涵。
我有一个包含此类数据 (DD/MM) 的 txt 文件,并且;作为分隔符:
01/10;10/06;15/11;10/07
01/10;10/06;15/11;10/07
01/11;20/06;10/11;30/07
01/11;20/06;10/11;30/07
10/11;20/06;20/01;30/07
01/10;01/06;15/11;30/06
首先,我set datestyle to European;
所以我有 DateStyle - "ISO, DMY"。
之后,我尝试使用 postgresql 将这些数据导入到 pheno 表的某些列中(参见下面的代码):
COPY pheno(planting_onset, harvesting_onset, planting_end, harvesting_end)
FROM '/home/user/Documents/worldcrops/algeria_times.txt' DELIMITERS ';';
并给出以下错误:
ERROR: invalid input syntax for type date: "01/10"
CONTEXT: COPY pheno, line 1, column planting_onset: "01/10"
********** Error **********
ERROR: invalid input syntax for type date: "01/10"
SQL state: 22007
Context: COPY pheno, line 1, column planting_onset: "01/10"
问题:如何将此数据类型 DD/MM 复制到表中,其中列的日期为“数据类型”?我应该更改“数据类型”列吗?
提前致谢。
【问题讨论】:
-
文本文件中的数据都不是日期。日期由月、日和年组成。你只有三分之二。 DMY 表示Day、Month、Year,同样你只有三分之二。你不能有一个 Date 类型而没有一个 Date 放入它。 (如果你仔细想想,这确实是一个常识问题。)
-
您的 CSV 文件中似乎有一些额外的空白字符。您是否有机会删除它们?
-
同意,肯·怀特。那么我应该将列的“日期类型”更改为 char 吗?如果我想计算一年内 2 个日期之间的差异(请注意,这些日期属于任何不特定的年份),该怎么办?
标签: sql postgresql date