Импорт CSV-файла PostgreSQL с помощью pgAdmin 4

Я пытаюсь импортировать файл 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;

3 ответа

Ты можешь использовать Import/Export вариант для этой задачи.

  1. Щелкните правой кнопкой мыши на вашем столе
  2. Выберите "Импорт / Экспорт" и нажмите
  3. Укажите правильный вариант
  4. Нажмите кнопку ОК

Вы должны попробовать это, это должно работать

COPY kordinater.test(идентификатор, дата, время, широта, долгота) FROM 'C:\tmp\yourfile.csv' DELIMITER ',' CSV HEADER;

Заголовок 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;

Еще кое-что:

Поскольку вы работаете с географическими координатами, я искренне рекомендую вам взглянуть на PostGIS. Он довольно прост в установке и значительно упрощает вашу жизнь, когда вы начинаете свои первые вычисления с геопространственными данными.

Другие вопросы по тегам