2014-11-05 7 views
8

Я пытаюсь импортировать TXT-файл в PostgreSQL. Файл txt имеет 6 столбцов:ОШИБКА: отсутствуют данные для столбца при использовании copy в psql

Laboratory_Name Laboratory_ID Facility ZIP_Code  City State 

И 213 строки.

Я пытаюсь использовать \copy, чтобы поместить содержимое этого файла в таблицу под названием doe2 в PostgreSQL с помощью этой команды:

\copy DOE2 FROM '/users/nathangroom/desktop/DOE_inventory5.txt' (DELIMITER(' ')) 

Это дает мне эту ошибку:

missing data for column "facility" 

I «Я все время искал, что делать, когда сталкиваешься с этой ошибкой, и ничего не помогло. кто-нибудь еще сталкивался с этим?

+1

Как выглядят данные в файле? (Несколько строк стоит образца.) – khampson

ответ

4

три возможные причины:

  1. Один или несколько строк из файла имеют только 4 или меньше символов пробела (ваши разделители).

  2. Один или несколько символов пробега были экранированы (непреднамеренно). Возможно, с обратной косой чертой в конце некотируемого значения. Для формата (по умолчанию) text вы используете, the manual explains:

    Backslash characters (\) can be used in the COPY data to quote data characters that might otherwise be taken as row or column delimiters.

Выход из COPY TO или pg_dump не проявляет какие-либо из этих ошибок при чтении из таблицы с соответствующей раскладкой. Но, может быть, ваш файл был отредактирован или из другого, неисправного источника?

  1. Вы используете этот файл Вы используете. Мета-команда \copy интерфейса командной строки psql является оберткой для COPY и считывает файлы, локальные для клиента . Если ваш файл живет на сервере, вместо этого используйте команду SQL COPY.
+0

Я не думаю, что это первый, потому что я изменил свой разделитель на «,», и произошло то же самое. Я не думаю, что это второй, потому что у меня нет обратной косой черты во всем моем файле (я сделал поиск с помощью ctrl-F). Если это третий, я не знаю, как это исправить. Я пытаюсь выполнить команду COPY в графическом интерфейсе pgadmin, и я получаю эту ошибку: ERROR: не удалось открыть файл «/users/nathangroom/desktop/DOE_inventory5.txt» для чтения: Permission denied. Я видел в другом месте StackOverflow, что использование команды \ copy в командной оболочке было решением этой ошибки. – nathanmgroom

+0

@nathanmgroom: Где ваш файл? Где находится сервер Postgres? Где ваш клиент? Кроме того, вы не можете просто изменить разделитель произвольно. Это должен быть тот, который используется в вашем файле. Что он? По умолчанию используется символ табуляции в текстовом формате. –

+0

Файл на моем рабочем столе, я не знаю точно, где находится сервер postgres и клиент, но я знаю, что он все локальный, на моей машине. Сервер говорит, что это localhost 5432. Я попробовал это снова после сохранения его как csv, и я получаю эту ошибку: ERROR: недопустимый синтаксис ввода для integer: «Laboratory_ID». Это не имеет смысла, потому что в этом столбце определенно целое число. – nathanmgroom

Смежные вопросы