Как игнорировать ошибки с помощью psql copy meta-command
Я использую psql
с базой данных PostgreSQL и следующее :
COPY isa (np1, np2, sentence) FROM 'c:Downloadsisa.txt' WITH DELIMITER '|'
Я:
ERROR: extra data after last expected column
как я могу пропустить строки с ошибками?
1 ответов
вы не можете пропустить ошибки, не пропуская всю команду до и включая Postgres 9.5. В настоящее время нет более сложной обработки ошибок.
\copy
- это просто оболочка вокруг SQL COPY
что результаты каналов через psql. Руководство для COPY
:
COPY
останавливает работу при первой ошибке. это не должно приводить к проблемы в случаеCOPY TO
, но цель таблица будет уже получили более ранние строки вCOPY FROM
. Эти строки не будут видимые или доступные, но они по-прежнему занимают место на диске. Это может количество значительное количество дискового пространства, если отказ произошло в большой операции копирования. Возможно, вы захотите вызватьVACUUM
восстановить потерянное пространство.
жирным выделено мной. И:
COPY FROM
вызовет ошибку, если какая-либо строка входного файла содержит больше или меньше столбцов, чем ожидалось.
было попытка добавить журнал ошибок в COPY
в Postgres 9.0, возглавляемый Aster Data, но он никогда не был совершен. Позже компания была приобретена компанией Teradata, поэтому я сомневаюсь, что они все еще преследуют проект.
решение
вместо этого исправьте входной файл.
если у вас есть один или несколько дополнительных столбцов во входном файле и файл в противном случае последовательный, вы можете добавить фиктивные столбцы в таблице isa
и бросьте их потом. Или (очиститель с производственными таблицами) импортировать во временную промежуточную таблицу и INSERT
выбранные столбцы (или выражения) в целевую таблицу isa
оттуда.
соответствующие ответы с подробными инструкциями: