No puede omitir los errores sin omitir todo el comando hasta Postgres 14 incluido. Actualmente no existe un manejo de errores más sofisticado.
\copy
es solo un envoltorio alrededor de SQL COPY
que canaliza los resultados a través de psql. El manual para COPY
:
COPY
detiene la operación al primer error. Esto no debería generar problemas en caso de COPY TO
, pero la tabla de destino ya habrá recibido filas anteriores en un COPY FROM
. Estas filas no estarán visibles ni accesibles, pero seguirán ocupando espacio en disco. Esto podría equivaler a una cantidad considerable de espacio en disco desperdiciado si la falla ocurriera en una operación de copia grande. Es posible que desee invocar VACUUM
para recuperar el espacio desperdiciado.
Énfasis en negrita mío. Y:
COPY FROM
generará un error si alguna línea del archivo de entrada contiene más o menos columnas de las esperadas.
COPY
es una forma extremadamente rápida de importar/exportar datos. Las comprobaciones sofisticadas y el manejo de errores lo ralentizarían.
Hubo un intento de agregar un registro de errores a COPY
en Postgres 9.0 pero nunca se confirmó.
Solución
Arregle su archivo de entrada en su lugar.
Si tiene una o más columnas adicionales en su archivo de entrada y el archivo es por lo demás coherente , puede agregar columnas ficticias a su tabla isa
y déjalos después. O (más limpio con tablas de producción) importar a una tabla de preparación temporal y INSERT
columnas seleccionadas (o expresiones) a su tabla de destino isa
desde allí.
Respuestas relacionadas con instrucciones detalladas:
- ¿Cómo actualizar filas seleccionadas con valores de un archivo CSV en Postgres?
- Comando COPY:copia solo columnas específicas de csv