Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用pgAdmin 4导入CSV文件PostgreSQL_Postgresql_Csv_Import_Pgadmin 4_Csv Import - Fatal编程技术网

使用pgAdmin 4导入CSV文件PostgreSQL

使用pgAdmin 4导入CSV文件PostgreSQL,postgresql,csv,import,pgadmin-4,csv-import,Postgresql,Csv,Import,Pgadmin 4,Csv Import,我正试图将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.

我正试图将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;

你应该试试这个,一定有用

复制kordinater.test(id、日期、时间、纬度、经度) 从'C:\tmp\yourfile.csv'分隔符','csv头

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


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

创建一个类似的,其中有问题的列为
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;
还有一件事:


由于您使用的是地理坐标,我真诚地建议您查看一下。当您开始使用地理空间数据进行第一次计算时,安装起来非常简单,并且使您的生活更加轻松。

您可以使用
导入/导出
选项执行此任务

  • 右键点击你的桌子
  • 选择“导入/导出”选项并单击
  • 提供适当的选择
  • 单击“确定”按钮

  • 嗨,你能帮我写这篇相关的文章吗?