ОШИБКА: дополнительные данные после последнего ожидаемого столбца в postgres

Когда я попытался скопировать очень большой текстовый файл в свою базу данных postgres, я получил следующую ошибку ниже.

Обратите внимание, что я создал таблицу с одним столбцом и не использую никаких разделителей при импорте txt-файла.

db1=# create table travis_2018_data (v text); 
db1=# \COPY travis_2018_data FROM 'C:\Users\testu\Downloads\travis_2018\2018-Certification\PROP.txt';

Ошибка:

ОШИБКА: дополнительные данные после последнего ожидаемого столбца
КОНТЕКСТ: КОПИРОВАТЬ travis_2018_data, строка 295032: "000000561125P 02018000000000000

Мне интересно, почему я все еще получаю сообщение об ошибке о дополнительных данных (или столбце) в строке 295032?


person Jov    schedule 24.10.2018    source источник
comment
Добро пожаловать в Stack Overflow! Другие пользователи отметили ваш вопрос как низкое качество и необходимость улучшения. Я переформулировал/отформатировал ваш ввод, чтобы его было легче читать/понимать. Пожалуйста, просмотрите мои изменения, чтобы убедиться, что они отражают ваши намерения. Не стесняйтесь оставлять мне комментарии, если у вас есть дополнительные вопросы или отзывы для меня.   -  person GhostCat    schedule 25.10.2018


Ответы (1)


Ваш текст, вероятно, содержит символ табуляции, который является разделителем столбцов по умолчанию для формата TEXT при использовании \copy (или copy) без указания формата.

Итак, \copy считает, что строка содержит два столбца, но ожидает только один, отсюда и сообщение об ошибке

Вам нужно указать разделитель, который не будет встречаться в файле. Символ со значением ASCII 1 вряд ли встретится в таком файле, поэтому вы можете попробовать:

 \COPY travis_2018_data FROM '.....' DELIMITER E'\x01'
person a_horse_with_no_name    schedule 25.10.2018