Saltar al contenido

Cómo ignorar errores con psql copy meta-command

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 un COPY TOpero la tabla de destino ya habrá recibido filas anteriores en un COPY 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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *