Как решить ОШИБКУ: отсутствуют данные для столбца с psql?

У меня есть make-файл, в котором я пытаюсь скопировать вывод программы Python в таблицу, размещенную на моем сервере PostgreSQL.

Мой запрос выглядит примерно так:

Python3 filter.py | psql -X -U $(DBUSER) -d $(DBNAME) -h $(DBHOST) -p $(DBPORT) -1 -e \
   -c "COPY table1(col1, col2) FROM STDIN with (format csv, header true, delimiter '|')"

Однако, когда я выполняю его, я получаю следующее сообщение об ошибке:

ERROR:  missing data for column "col1"
CONTEXT:  COPY table1, line 168061: ""

Чтобы попытаться понять проблему, я экспортировал вывод программы Python в файл CSV и понял, что проблема возникает из-за того, что после строки 168060 больше нет записей. Таким образом, строка 168061 действительно пуста.

Я пробовал использовать опцию NULL для COPY, но это не сработало, я получаю ту же ошибку.

Мне также удалось импортировать в table1 содержимое физического CSV-файла с помощью очень похожего оператора COPY. Это работает, но моей целью было бы добиться этого без создания файла.

Любые идеи?


person Christian Helleboid    schedule 02.12.2019    source источник
comment
Привет, Кристиан! Попробуй написать более четкое название, что-то более конкретное, чтобы люди могли иметь представление, прежде чем читать содержание. Кстати, вы пробовали не отправлять пустую строку в конце?   -  person mnesarco    schedule 02.12.2019
comment
Спасибо, действительно, это был мой первый пост, так что в следующий раз постараюсь быть более точным :)   -  person Christian Helleboid    schedule 04.12.2019


Ответы (2)


Решение состоит в том, чтобы изменить filter.py так, чтобы он не выводил оскорбительную пустую строку.

person Laurenz Albe    schedule 02.12.2019

спасибо всем за ваши ответы,

На самом деле я просто сделал легкую модификацию в filter.py, и теперь он работает. Я был слишком сосредоточен на том, чтобы сделать это во время импорта с помощью PSQL.

Ваше здоровье :)

person Christian Helleboid    schedule 04.12.2019