2

我正在尝试将 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;
4

3 回答 3

3

您可以Import/Export为此任务使用选项。

  1. 右键单击您的表
  2. 选择“导入/导出”选项并单击
  3. 提供合适的选项
  4. 单击确定按钮

在此处输入图像描述

在此处输入图像描述

于 2018-04-18T10:25:00.090 回答
0

我相信解决这个问题的最快方法是创建一个中间临时表,以便您可以导入数据并随意转换坐标。

使用有问题的列创建一个类似的临时表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。当您开始使用地理空间数据进行第一次计算时,它非常易于安装并使您的生活更加轻松。

于 2018-04-15T17:55:00.067 回答
0

你应该试试这个它必须工作

COPY kordinater.test(id,date,time,latitude,longitude) FROM 'C:\tmp\yourfile.csv' DELIMITER ',' CSV HEADER;

您的 csv 标头必须用逗号分隔,不带分号或尝试将 id 列类型更改为 bigint

了解更多

于 2018-04-15T17:11:37.820 回答