"дополнительные данные после последнего ожидаемого столбца" при попытке импортировать файл csv в postgresql
Я пытаюсь скопировать содержимое CSV файла в мой postgresql db, и я получаю эту ошибку "дополнительные данные после последнего ожидаемого столбца".
Содержимое моего CSV
agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone
100,RATP (100),http://www.ratp.fr/,CET,,
и моя команда postgresql
COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
Вот моя таблица
CREATE TABLE agency (
agency_id character varying,
agency_name character varying NOT NULL,
agency_url character varying NOT NULL,
agency_timezone character varying NOT NULL,
agency_lang character varying,
agency_phone character varying,
agency_fare_url character varying
);
Column | Type | Modifiers
-----------------+-------------------+-----------
agency_id | character varying |
agency_name | character varying | not null
agency_url | character varying | not null
agency_timezone | character varying | not null
agency_lang | character varying |
agency_phone | character varying |
agency_fare_url | character varying |
Ответы
Ответ 1
Теперь у вас есть 7 полей.
Вам нужно отобразить эти 6 полей из CSV в 6 полей в таблицу.
Вы не можете отображать только 3 поля из csv, если у вас есть 6, как вы это делаете:
\COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
Все поля из файла csv должны отображаться в копии из команды.
И поскольку вы определили разделитель csv ,
по умолчанию, вам не нужно его указывать.
Ответ 2
Не уверен, что это считается ответом, но я просто поразил это множеством CSV файлов и обнаружил, что простое открытие их в Excel и повторное сохранение без изменений устраняет ошибку. IOTW, возможно, имеется некоторое неправильное форматирование в исходном файле, которое Excel может очистить автоматически.
Ответ 3
Я попробовал ваш пример, и он отлично работает, но...
ваша команда из командной строки psql отсутствует \
database=# \COPY agency FROM 'myFile.txt' CSV HEADER DELIMITER ',';
И в следующий раз включите DDL
Я создал DDL
из заголовков csv