Você não pode pular os erros sem pular todo o comando até e incluindo o Postgres 14. Atualmente não há tratamento de erros mais sofisticado.
\copy é apenas um wrapper em torno do SQL COPY que canaliza os resultados através do psql. O manual para COPY :
COPYinterrompe a operação no primeiro erro. Isso não deve causar problemas no caso de umCOPY TO, mas a tabela de destino já recebeu linhas anteriores em umCOPY FROM. Essas linhas não estarão visíveis ou acessíveis, mas ainda ocuparão espaço em disco. Isso pode significar uma quantidade considerável de espaço em disco desperdiçado se a falha ocorrer em uma operação de cópia grande. Você pode querer invocarVACUUMpara recuperar o espaço perdido.
Minha ênfase em negrito. E:
COPY FROMgerará um erro se qualquer linha do arquivo de entrada contiver mais ou menos colunas do que o esperado.
COPY é uma maneira extremamente rápida de importar/exportar dados. Verificações sofisticadas e tratamento de erros o atrasariam. Houve uma tentativa de adicionar o registro de erros a
COPY no Postgres 9.0, mas nunca foi confirmado. Solução
Corrija seu arquivo de entrada.
Se você tiver uma ou mais colunas adicionais em seu arquivo de entrada e o arquivo for consistente de outra forma , você pode adicionar colunas fictícias à sua tabela
isa e solte-os depois. Ou (mais limpo com tabelas de produção) importe para uma tabela temporária e INSERT colunas selecionadas (ou expressões) para sua tabela de destino isa de lá. Respostas relacionadas com instruções detalhadas:
- Como atualizar linhas selecionadas com valores de um arquivo CSV no Postgres?
- Comando COPY:copia apenas colunas específicas do csv