使用psql\copy导入带有时间戳列(.dd.mm.yyyy hh.mm.ss)的.csv

jat*_*bat 9 csv postgresql timestamp postgresql-9.2 psql

我正在尝试使用psql \COPY命令(而不是SQL COPY)将.csv文件中的数据导入到postgresql 9.2数据库中.

输入.csv文件包含一个时间戳为dd.mm.yyyy hh.mm.ss格式的列.

我使用了将数据库日期样式设置为DMY.

set datestyle 'ISO,DMY'
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我运行\COPY命令时:

\COPY gc_test.trace(numpoint,easting,northing,altitude,numsats,pdop,timestamp_mes,duration,ttype,h_error,v_error) 
FROM 'C:\data.csv' WITH DELIMITER ';' CSV HEADER ENCODING 'ISO 8859-1'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误:日期/时间字段值超出范围:"16.11.2012 07:10:06"

提示:也许你需要一个不同的"日期风格"设置.

语境:COPY trace,第2行,列timestamp_mes:"16.11.2012 07:10:06"

datestyle有什么问题?

Erw*_*ter 10

您是否尝试设置datestyle的设定服务器

SET datestyle = 'ISO,DMY';
Run Code Online (Sandbox Code Playgroud)

您正在使用psql元命令\copy,这意味着输入文件是客户端的本地.但它仍然是必须强制输入匹配数据类型的服务器.

更一般地说,与在服务器\copy上调用COPY并与之密切相关的psql元命令不同.我引用手册\set:

注意:此命令与SQL命令SET无关.