Si hallas algún fallo en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes aplicar el código al trabajo final.
Solución:
No puede omitir los errores sin omitir todo el comando hasta Postgres 9.5 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 en el primer error. Esto no debería causar problemas en el caso de unCOPY TO
pero la tabla de destino ya habrá recibido filas anteriores en unCOPY FROM
. Estas filas no serán visibles ni accesibles, pero aún ocupan espacio en el 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.
Hubo un intento de agregar el registro de errores a COPY
en Postgres 9.0, encabezado por Aster Data, pero nunca se comprometió. Posteriormente, la empresa fue adquirida por Teradata, por lo que dudo que sigan con el proyecto.
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 consistentepuede 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 las filas seleccionadas con valores de un archivo CSV en Postgres?
- Comando COPY: copia solo columnas específicas de csv