【问题标题】:Importing CSV file PostgreSQL using pgAdmin 4使用 pgAdmin 4 导入 CSV 文件 PostgreSQL
【发布时间】:2018-09-25 10:35:15
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

  1. 右击你的桌子
  2. 选择“导入/导出”选项并点击
  3. 提供适当的选项
  4. 点击确定按钮

【讨论】:

    【解决方案2】:

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

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

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

    to know more

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-07-28
        • 1970-01-01
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多