当从 csv 以毫秒为单位加载时间时,Postgresql 会丢弃尾随零

Postgresql drops trailing zeroes when loading time with milliseconds from csv

我正在将一个 csv 文件导入 Postgres Table。该文件具有以下格式:

2019/12/13, 14:56:02, 3172.50, 3174.25, 3172.50, 3172.50, 1, 1, 1, 0

table定义为:

CREATE TABLE tablename (
date date,
time time,
v1 numeric,
v2 numeric,
v3 numeric,
v4 numeric,
v5 integer,
v6 integer,
v6 integer,
v7 integer,
PRIMARY KEY(date, time)
);

time 字段有问题。在某些情况下,添加毫秒以提高精度:

14:56:02.1
14:56:02.9
14:56:02.10

不幸的是,Postgres 似乎删除了尾随零,这导致它将以下两个值标记为重复值:

14:56:02.1
14:56:02.10
ERROR:  duplicate key value violates unique constraint "tablename_pkey"
DETAIL:  Key (date, "time")=(2019-12-13, 14:56:02.1) already exists.
CONTEXT:  COPY input_file, line 1584

有没有办法指示 psql 不要删除尾随零?我试过 time(4) 强制执行 4 位精度,没有区别。

谢谢!

Postgres 在这里没有做错任何事。我过了一会儿才意识到问题出在数据上。

.1.10 相等。数据中创造性地使用了时间戳,即这里的.1表示“这一秒内的第1条记录”,.10表示“这一秒内的第10条记录”,所以毫秒分量没有从时间戳的角度来理解。