我正在尝试将CSV文件导入我的PostgreSQL但是我收到此错误
ERROR: invalid input syntax for integer: "id;date;time;latitude;longitude"
CONTEXT: COPY test, line 1, column id: "id;date;time;latitude;longitude"
我的csv文件很简单
id;date;time;latitude;longitude
12980;2015-10-22;14:13:44.1430000;59,86411203;17,64274849
使用以下代码创建表:
CREATE TABLE kordinater.test
(
id integer NOT NULL,
date date,
"time" time without time zone,
latitude real,
longitude real
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE kordinater.test
OWNER to postgres;
答案 0 :(得分:1)
答案 1 :(得分:0)
你应该尝试这一点必须工作
COPY kordinater.test(身份证,日期,时间,纬度,经度) FROM'C:\ tmp \ yourfile.csv'DELIMITER','CSV HEADER;
您的csv标头必须用逗号分隔 NOT WITH分号或尝试将id列类型更改为bigint
答案 2 :(得分:0)
我认为克服此问题的最快方法是创建一个中间临时表,以便您可以导入数据并根据需要转换坐标。
创建类似的 temporary table ,其中有问题的列为text
:
CREATE TEMPORARY TABLE tmp
(
id integer,
date date,
time time without time zone,
latitude text,
longitude text
);
使用COPY
导入您的文件:
COPY tmp FROM '/path/to/file.csv' DELIMITER ';' CSV HEADER;
在tmp
表中获得数据后,您可以使用此命令转换坐标并将其插入test
表中:
INSERT INTO test (id, date, time, latitude, longitude)
SELECT id, date, time, replace(latitude,',','.')::numeric, replace(longitude,',','.')::numeric from tmp;
还有一件事:
由于您正在使用地理坐标,我诚挚地建议您查看PostGIS。当您使用地理空间数据开始第一次计算时,它非常易于安装并使您的生活更轻松。