使用pgAdmin 4导入CSV文件PostgreSQL

时间:2018-04-15 17:03:38

标签: postgresql csv import pgadmin-4 csv-import

我正在尝试将CS​​V文件导入我的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;

3 个答案:

答案 0 :(得分:1)

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

  1. 右键单击表格
  2. 选择"导入/导出"选项&点击
  3. 提供适当的选项
  4. 单击“确定”按钮
  5. enter image description here

    enter image description here

答案 1 :(得分:0)

你应该尝试这一点必须工作

COPY kordinater.test(身份证,日期,时间,纬度,经度) FROM'C:\ tmp \ yourfile.csv'DELIMITER','CSV HEADER;

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

to know more

答案 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。当您使用地理空间数据开始第一次计算时,它非常易于安装并使您的生活更轻松。