Подтвердить что ты не робот

"дополнительные данные после последнего ожидаемого столбца" при попытке импортировать файл 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 | 
4b9b3361

Ответ 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