Импорт 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
вариант для этой задачи.
- Щелкните правой кнопкой мыши на вашем столе
- Выберите "Импорт / Экспорт" и нажмите
- Укажите правильный вариант
- Нажмите кнопку ОК
Вы должны попробовать это, это должно работать
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. Он довольно прост в установке и значительно упрощает вашу жизнь, когда вы начинаете свои первые вычисления с геопространственными данными.